Content-Type: multipart/related; start=; boundary=----------9rqzPOlJj9JcTJZT4nfBp3 Content-Location: http://pubs.acs.org/toc/jmcmar/48/4 Subject: =?utf-8?Q?Journal=20of=20Medicinal=20Chemistry:=20Volume=2048,=20Issue=204=20(ACS=20Publications)?= MIME-Version: 1.0 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=4.htm Content-Type: text/html; charset=UTF-8; name=4.htm Content-Id: Content-Location: http://pubs.acs.org/toc/jmcmar/48/4 Content-Transfer-Encoding: Quoted-Printable = = = = = Journal of Medicinal Chemistry: Volume 48, Issue 4 (ACS Publicat= ions) = = = = =
=
= =
= = = = = =

Table of Contents

= = = =
= = = = = = 3D"Journal Larger Cover = =
=
February 24, 2005
Volume 48, Issue 4
Pages 897-1296
= = =

About the Cover: Interaction = of the β-L-enantiomer of a 4'-C-e= thynyl-2',3'-dideoxynucleoside analogue (ent-14-TP)= at the active site of HIV reverse transcriptase (Siddiqui, M. A.; et al= . J. Med. Chem. 2004, 47, 5041-5048).

=
= = <= !-- Spider trap link --> =
=
=
For Selected Articles:
=
= =

Letters
=

Minor Structural Modifications Convert the Dual = TP/CRTH2 Antagonist Ramatroban into a Highly Selective and Potent CRTH2 = Antagonist

Trond Ulven and Evi Kos= tenis
pp 897–900
Publication Date (Web): January 27, 2005 (Letter)
DOI: 10.1021/jm049036i
3D"Figure"
Figure 1

Fully 2‘-Modified Oligonucleo= tide Duplexes with Improved in Vitro Potency and Stability Compared to U= nmodified Small Interfering RNA

Ch= arles R. Allerson, Namir Sioufi, Russell Jarres, Thazha P. Prakash, Nish= ant Naik, Andres Berdeja, Lisa Wanders, Richard H. Griffey, Eric E. Sway= ze, and Balkrishen Bhat
pp 901–904
Publication Da= te (Web): January 20, 2005 (Letter)
DOI: 10.1021/jm049167j
3D"Figure"
Figure 1
addFigure('10.1021/jm049137g','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4/= jm049137g','jm049137gf00002.gif');

Di= scovery and Cocrystal Structure of Benzodiazepinedione HDM2 Antagonists = That Activate p53 in Cells

Bruce L= . Grasberger, Tianbao Lu, Carsten Schubert, Daniel J. Parks, Theodore E.= Carver, Holly K. Koblish, Maxwell D. Cummings, Louis V. LaFrance, Karen= L. Milkiewicz, Raul R. Calvo, Diane Maguire, Jennifer Lattanze, Carol F= . Franks, Shuyuan Zhao, Kannan Ramachandren, Gwendolyn R. Bylebyl, Marie= Zhang, Carl L. Manthey, Eugene C. Petrella, Michael W. Pantoliano, Ingr= id C. Deckman, John C. Spurlino, Anna C. Maroney, Bruce E. Tomczuk, Chri= stopher J. Molloy, and Roger F. Bone
pp 909–912
P= ublication Date (Web): February 01, 2005 (Letter)
DOI: 10.1021/= jm049137g
3D"Figure"
Figure 1

Impro= ving Specificity vs Bacterial Thymidylate Synthases through N-Dan= syl Modulation of Didansyltyrosine

Donatella Tondi, Alberto Venturelli, Stefania Ferrari, Stefano Ghelli, = and M. Paola Costi
pp 913–916
Publication Date (W= eb): February 02, 2005 (Letter)<= /div>
DOI: 10.1021/jm0491445
3D"Figure"
Figure 1

Articles

=
addFigure('10.1021/jm049725u','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issu= e-4/jm049725u','jm049725uf00002.gif');

Design, Synthesis, and Biological Evaluation of Novel Potent and Selec= tive αvβ3v;= 2;5 Integrin Dual Inhibitors with Improved Bioavailability. S= election of the Molecular Core

Jua= n José Marugán, Carl Manthey, Beth Anaclerio, Lou Lafrance= , Tianbao Lu, Tom Markotan, Kristi A. Leonard, Carl Crysler, Stephen Eis= ennagel, Malini Dasgupta, and Bruce Tomczuk
pp 926–934
Publication Date (Web): January 28, 2005 (Article)
DOI: 1= 0.1021/jm049725u
3D"Figure"
Figure 1
<= script type=3D"text/javascript">addFigure('10.1021/jm040818l','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.iss= ue-4/jm040818l','jm040818lf00003.gif');

Multivariate Design, Synthesis, and Biological Evaluation of Pepti= de Inhibitors of FimC/FimH Protein−Protein Interactions in Uropat= hogenic Escherichia coli

Andreas Larsson, Susanne M. C. Johansson, Jerome S. Pinkner, Scott = J. Hultgren, Fredrik Almqvist, Jan Kihlberg, and Anna Linusson
pp 9= 35–945
Publication Date (Web): February 01, 2= 005 (Article)
DOI: 10.1021/jm040818l
<= /div>
3D"Figure"
<= a class=3D"prev" title=3D"Previous Figure" href=3D"#">Figure 1=
=

Application of a Flexible Synthesis of (5R)-Thiolac= tomycin To Develop New Inhibitors of Type I Fatty Acid Synthase

=
Jill M. McFadden, Susan M. Medghalchi, Jag= an N. Thupari, Michael L. Pinn, Aravinda Vadlamudi, Katherine I. Miller,= Francis P. Kuhajda, and Craig A. Townsend
pp 946–961
Publication Date (Web): January 20, 2005 (Article)
DOI: 10= .1021/jm049389h
3D"Figure"
Figure 1
<= script type=3D"text/javascript">addFigure('10.1021/jm049798d','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.iss= ue-4/jm049798d','jm049798df00003.gif');

Comparison of Aut= omated Docking Programs as Virtual Screening Tools

Maxwell D. Cummings, Renee L. DesJarlais, Alan C. Gibbs= , Venkatraman Mohan, and Edward P. Jaeger
pp 962–976
Publication Date (Web): January 20, 2005 (Article)
DOI: 10.= 1021/jm049798d
3D"Figure"
Figure 1
<= script type=3D"text/javascript">addFigure('10.1021/jm049430g','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.iss= ue-4/jm049430g','jm049430gf00003.gif');

Mechanism of Cytotoxicity of Copper(I) Complexes of 1,2-Bis(diphen= ylphosphino)ethane

Nusrat J. Sangh= amitra, Pornima Phatak, Sanjeev Das, Ashoka G. Samuelson, and Kumaravel = Somasundaram
pp 977–985
Publication Date (Web): <= /strong>January 29, 2005 (Article)
<= div class=3D"DOI">DOI: 10.1021/jm049430g
Abstract | <= a class=3D"articleLink" href=3D"/doi/suppl/10.1021/jm049430g">Supporting= Info
3D"Figure"
Figure 1
addFigure('10.1021/jm049309+','/appl/literat= um/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4= /jm049309+','jm0493091h00001.gif');addFigure('10.1021/jm049309+','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issu= e-4/jm049309+','jm0493091f00003.gif');

CoMFA, Synthesis, and Pharmacological Evaluation of (E)-3-(2-Carboxy-2-arylvinyl)-4,6-dichloro-1H-indole-2-carboxylic= Acids:  3-[2-(3-Aminophenyl)-2-carboxyvinyl]-4,6-dichloro-1H-indole-2-carboxylic Acid, a Potent Selective Glycine-Site NMDA Recepto= r Antagonist

Bruce M. Baron, Rober= t J. Cregge, Robert A. Farr, Dirk Friedrich, Raymond S. Gross, Boyd L. H= arrison, David A. Janowick, Donald Matthews, Timothy C. McCloskey, Scott= Meikrantz, Philip L. Nyce, Roy Vaz, and William A. Metz
pp 995&nda= sh;1018
Publication Date (Web): February 01, 2005 (Article)
= DOI: 10.1021/jm0491849
3D"F=
<= div class=3D"trayHandle">
Fig= ure 1
<= /div>

Novel Inhibitors of Human H= istone Deacetylases:  Design, Synthesis, Enzyme Inhibition, and Can= cer Cell Growth Inhibition of SAHA-Based Non-hydroxamates

Takayoshi Suzuki, Yuki Nagano, Akiyasu Kouketsu,= Azusa Matsuura, Sakiko Maruyama, Mineko Kurotaki, Hidehiko Nakagawa, an= d Naoki Miyata
pp 1019–1032
Publication Date (Web= ): January 25, 2005 (Article)
DOI: 10.1021/jm049207j
<= a class=3D"articleLink" href=3D"/doi/abs/10.1021/jm049207j">Abstract= | Suppor= ting Info
=
<= input type=3D"checkbox" onclick=3D"evalAll(this);" value=3D"10.1021/jm04= 9207j" name=3D"doi">
3D"Figure"
Figure 1
addFigure('10.1021/jm049375b','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue= -4/jm049375b','jm049375bf00002.gif');=

Synthesis and Ce= llular Studies of Nonaggregated Water-Soluble Phthalocyanines

Wei Liu, Timothy J. Jensen, Frank R. Froncze= k, Robert P. Hammer, Kevin M. Smith, and M. Graça H. Vicentepp 1033–1041
Publication Date (Web): January= 27, 2005 (Article)
DOI: 10.1021/jm049375b
<= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
Figure 1
=

The Role of Intracellularly Released Formaldehyde and Butyri= c Acid in the Anticancer Activity of Acyloxyalkyl Esters

Abraham Nudelman, Inesa Levovich, Suzanne M. Cutt= s, Don R. Phillips, and Ada Rephaeli
pp 1042–1054
Publication Date (Web): January 22, 2005 (Article)
DOI: 10.102= 1/jm049428p
3D"Figure"
Figure 1

Optim= ization and Validation of a Docking-Scoring Protocol; Application to Vir= tual Screening for COX-2 Inhibitors

Jean-Christophe Mozziconacci, Eric Arnoult, Philippe Bernard, Quoc Tua= n Do, Christophe Marot, and Luc Morin-Allory
pp 1055–1068Publication Date (Web): February 01, 2005 (Article)
DOI: 10.1021/jm049332v
addFigure('10.1021/jm049524q','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4/= jm049524q','jm049524qn00001.gif','true');

A New Method= for Estimating the Importance of Hydrophobic Groups in the Binding Site= of a Protein

Matthew D. Kelly and= Ricardo L. Mancera
pp 1069–1078
Publication Date= (Web): January 15, 2005 (Article)
DOI: 10.1021/jm049524q
=
<= div>Abstrac= t
addFigure('10.1021/jm049549p','/appl/literatum= /publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4/j= m049549p','jm049549pf00005.gif');

Ext= ravascular Transport of Drugs in Tumor Tissue:  Effect of Lipophili= city on Diffusion of Tirapazamine Analogues in Multicellular Layer Cultu= res

Frederik B. Pruijn, Joanna R. = Sturman, H. D. Sarath Liyanage, Kevin O. Hicks, Michael P. Hay, and Will= iam R. Wilson
pp 1079–1087
Publication Date (Web)= : January 27, 2005 (Article)
DOI: 10.1021/jm049549p
Abstract = | Support= ing Info
<= /div>
3D"Figure"
Figure 1
addFigure('10.1021/jm0491804','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue= -4/jm0491804','jm0491804f00002.gif');= addFigure('10.1021/jm049165z','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issu= e-4/jm049165z','jm049165zf00002.gif');
=3D"Figure"
Figure 1
=
addFigure('10.1021/jm040159c','/appl/litera= tum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-= 4/jm040159c','jm040159cf00001.gif');<= script type=3D"text/javascript">addFigure('10.1021/jm040159c','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.iss= ue-4/jm040159c','jm040159cf00004.gif');

Optimization of 6,7-Disubstituted-4-(arylamino)quinoline-3-carbonitri= les as Orally Active, Irreversible Inhibitors of Human Epidermal Growth = Factor Receptor-2 Kinase Activity

= Hwei-Ru Tsou, Elsebe G. Overbeek-Klumpers, William A. Hallett, Marvin F.= Reich, M. Brawner Floyd, Bernard D. Johnson, Ronald S. Michalak, Ramasw= amy Nilakantan, Carolyn Discafani, Jonathan Golas, Sridhar K. Rabindran,= Ru Shen, Xiaoqing Shi, Yu-Fen Wang, Janis Upeslacis, and Allan Wissner<= /div>pp 1107–1131
Publication Date (Web): Jan= uary 27, 2005 (Article)
DOI: 10.1021/jm040159c
=

Indazole Estrogens:  Highly Selective Ligands for the Estr= ogen Receptor β

Meri De Ang= elis, Fabio Stossi, Kathryn A. Carlson, Benita S. Katzenellenbogen, and = John A. Katzenellenbogen
pp 1132–1144
Publication= Date (Web): January 21, 2005 (Article)=
DOI: 10.1021/jm049223g<= /div>
<= div class=3D"articleFigure">3D"Figure"
Figure 1

Synthesis an= d Biological Evaluation of a New Series of 2,3,5-Substituted [1,2,4]-Thi= adiazoles as Modulators of Adenosine A1 Receptors and Their M= olecular Mechanism of Action

Anik&= oacute; Göblyös, Henk de Vries, Johannes Brussee, and Adriaan = P. IJzerman
pp 1145–1151
Publication Date (Web): = January 25, 2005 (Article)
=
DOI: 10.1021/jm049337s

Synthesis and Cytotoxic Evaluation of Novel Spiro= hydantoin Derivatives of the Dihydrothieno[2,3-b]naphtho-4,9-dion= e System

Isabel Gomez-Monterrey, G= iovanni Santelli, Pietro Campiglia, Daniela Califano, Fabiano Falasconi,= Claudio Pisano, Loredana Vesci, Teresa Lama, Paolo Grieco, and Ettore N= ovellino
pp 1152–1157
Publication Date (Web): January 22, 2005 (Article)
DOI: 10.1021/jm0408565

Novel [2‘,5‘-Bis-O-(tert-butyl= dimethylsilyl)-β-d-ribofuranosyl= ]- 3‘-spiro-5‘ ‘-(4‘ ‘-amin= o-1‘ ‘,2‘ ‘-oxathiole-2‘&nb= sp;‘,2‘ ‘-dioxide) Derivatives with Anti-HIV-1= and Anti-Human-Cytomegalovirus Activity

Sonia de Castro, Esther Lobatón, María-Jesús= Pérez-Pérez, Ana San-Félix, Alessandra Cordeiro, G= raciela Andrei, Robert Snoeck, Erik De Clercq, Jan Balzarini, Marí= ;a-José Camarasa, and Sonsoles Velázquez
pp 1158&ndas= h;1168
Publication Date (Web): January 21, 2005 (Article)
DO= I: 10.1021/jm040868q
=
=
3D"Figu=
Figu= re 1
=

3-[(2R)-Amino-2-phenylethyl]-1-(2,6-difluoroben= zyl)-5-(2-fluoro-3-methoxyphenyl)- 6-methylpyrimidin-2,4-dione (NBI 4290= 2) as a Potent and Orally Active Antagonist of the Human Gonadotropin-Re= leasing Hormone Receptor. Design, Synthesis, and in Vitro and in Vivo Ch= aracterization

Fabio C. Tucci, Yun= -Fei Zhu, R. Scott Struthers, Zhiqiang Guo, Timothy D. Gross, Martin W. = Rowbottom, Oscar Acevedo, Yinghong Gao, John Saunders, Qiu Xie, Greg J. = Reinhart, Xin-Jun Liu, Nicholas Ling, Anne K. L. Bonneville, Takung Chen= , Haig Bozigian, and Chen Chen
pp 1169–1178
Publi= cation Date (Web): January 25, 2005 (Ar= ticle)
DOI: 10.1021/jm04= 9218c
3D"Figure"
=
Figure 1

Modulation of MRP-1-Mediated= Multidrug Resistance by Indomethacin Analogues

Claudia Rosenbaum, Sonja Röhrs, Oliver Müller, a= nd Herbert Waldmann
pp 1179–1187
Publication Date= (Web): January 25, 2005 (Article)
DOI: 10.1021/jm0499099
=
3D"Figure"
Figure 1
addFigure('10.1021/jm0491896','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issu= e-4/jm0491896','jm0491896f00002.gif');

Synthesis and Evaluation of S-Acyl-2-thioethyl Esters of = Modified Nucleoside 5‘-Monophosphates as Inhibitors of Hepatitis = C Virus RNA Replication

Thazha P. = Prakash, Marija Prhavc, Anne B. Eldrup, P. Dan Cook, Steven S. Carroll, = David B. Olsen, Mark W. Stahlhut, Joanne E. Tomassini, Malcolm MacCoss, = Sheila M. Galloway, Catherine Hilliard, and Balkrishen Bhat
pp 1199= –1210
Publication Date (Web): February 01, 20= 05 (Article)
DOI: 10.1021/jm0495172
=3D"Figure"
Figure 1
=
addFigure('10.1021/jm040845b','/appl/litera= tum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-= 4/jm040845b','jm040845bf00001.gif');<= div class=3D"articleBox">

Synthesis and Evaluation of Double-Prodrugs ag= ainst HIV. Conjugation of D4T with 6-Benzyl-1-(ethoxymethyl)-5-isopropyl= uracil (MKC-442, Emivirine)-Type Reverse Transcriptase Inhibitors via th= e SATE Prodrug Approach

Lene Peter= sen, Per T. Jørgensen, Claus Nielsen, Thomas H. Hansen, John Niel= sen, and Erik B. Pedersen
pp 1211–1220
Publicatio= n Date (Web): January 22, 2005 (Article= )
DOI: 10.1021/jm040845b=
=
3D"Figure"
Figure 1

Synthesis, Nicotinic Acetylcholine Receptor Binding, and Antinocicep= tive Properties of 3‘-Substituted Deschloroepibatidine Analogues.= Novel Nicotinic Antagonists

F. Iv= y Carroll, Wei Ma, Yasuno Yokota, Jeffrey R. Lee, Lawrence E. Brieaddy, = Hernán A. Navarro, M. I. Damaj, and Billy R. Martin
pp 1221&= ndash;1228
Publication Date (Web): February 01, 200= 5 (Article)
DOI: 10.1021/jm040160b
3D=
Figure 1<= /div>
addFigure('10.1021/jm0401356','/appl/literatum= /publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4/j= m0401356','jm0401356f00001.gif');

Chiral DNA Gyrase Inhibito= rs. 3. Probing the Chiral Preference of the Active Site of DNA Gyrase. S= ynthesis of 10-Fluoro-6-methyl-6,7-dihydro-9-piperazinyl- 2H-benz= o[a]quinolizin-20-one-3-carboxylic Acid Analogues

Robert A. Fecik, Pratik Devasthale, Segaran Pilla= i, Ali Keschavarz-Shokri, Linus Shen, and Lester A. Mitscher
pp 122= 9–1236
Publication Date (Web): January 26, 20= 05 (Article)
DOI: 10.1021/jm0401356
3D"Figure"
Figure 1<= /span>
<= script type=3D"text/javascript">addFigure('10.1021/jm030603w','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.iss= ue-4/jm030603w','jm030603wn00001.gif','true');

8-Substituted Analogues of 3-(3-Cyclopentyloxy-4-methoxy-benzy= l)-8-isopropyl- adenine: Highly Potent and Selective PDE4 Inhibitors=

John W. F. Whitehead, Gary P. Lee, Pa= rviz Gharagozloo, Peter Hofer, André Gehrig, Peter Wintergerst, D= onald Smyth, William McCoull, Mohamed Hachicha, Aniket Patel, and Donald= J. Kyle
pp 1237–1243
Publication Date (Web): January 27, 2005 (Article)
DOI: 10.1021/jm030603w

Degradation, Insulin Secretion, and Antihyperglycemic = Actions of Two Palmitate-Derivitized N-Terminal Pyroglutamyl Anal= ogues of Glucose-Dependent Insulinotropic Polypeptide

Nigel Irwin, Brian D. Green, Victor A. Gault, Brett = Greer, Patrick Harriott, Clifford J. Bailey, Peter R. Flatt, and Finbarr= P. M. O'Harte
pp 1244–1250
Publication Date (Web= ): February 01, 2005 (Article)
DOI: 10.1021/jm049262s
<= div class=3D"icons">
=
3D"Figure"
Figure 1

Bri= ef Articles

addFigure('10.1021/jm049458s','/appl/literat= um/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4= /jm049458s','jm049458sf00006.gif');

S= ynthesis of (±)-2-O-[4‘-(N-9‘ &#= x2018;-Purinyl)butyl] myo-Inositol 1,4,5-Tris(phosphate), a Poten= t Full Agonist at the d-myo-Inos= itol 1,4,5-Tris(phosphate) Receptor

Marc-Antoine Moris, Annabelle Z. Caron, Gaétan Guillemette, Did= ier Rognan, Martine Schmitt, and Gilbert Schlewer
pp 1251–125= 5
Publication Date (Web): January 27, 2005 (Brief Article)
D= OI: 10.1021/jm049458s
3D"F=
<= div class=3D"trayHandle">
Fig= ure 1
<= /div>

Antiviral Activity of Glycyrrhizic Acid Derivatives agains= t SARS−Coronavirus

Gerold H= oever, Lidia Baltina, Martin Michaelis, Rimma Kondratenko, Lia Baltina, = Genrich A. Tolstikov, Hans W. Doerr, and Jindrich Cinatl, Jr.
pp 12= 56–1259
Publication Date (Web): January 19, 2= 005 (Brief Article)
DOI: 10.1021/jm0493008
=

Antithrombin Act= ivation by Nonsulfated, Non-Polysaccharide Organic Polymer

Bernhard H. Monien and Umesh R. Desai
pp 1= 269–1273
Publication Date (Web): January 27, = 2005 (Brief Article)
DOI: 10.1021/jm0492960
=
3D"Figu=
Figu= re 1
=

Amino Ac= id Ester Prodrugs of the Antiviral Agent 2-Bromo-5,6-dichloro-1-(β= ;-d-ribofuranosyl)benzimidazole as Pote= ntial Substrates of hPEPT1 Transporter

Xueqin Song, Balvinder S. Vig, Philip L. Lorenzi, John C. Drach, Le= roy B. Townsend, and Gordon L. Amidon
pp 1274–1277
Publication Date (Web): February 01, 2005 (Brief Article)
DOI: 10.1021/jm049450i
=
3D"Figure"
Figure 1
addFigure('10.1021/jm0492249','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2005/jmcmar.2005.48.issue-4/= jm0492249','jm0492249n00001.gif','true');

<= a href=3D"/doi/abs/10.1021/jm049254b">Greater Than the Sum of Its Parts:=   Combining Models for Useful ADMET Prediction

Sean E. O'Brien and Marcel J. de Groot
pp 1287&nda= sh;1291
Publication Date (Web): February 01, 2005 (Brief Article)
DOI: 10.1021/jm049254b
<= /div>
3D"Figure"
<= a class=3D"prev" title=3D"Previous Figure" href=3D"#">Figure 1=
=

Synthesis, A= ntitumor Evaluation, and Apoptosis-Inducing Activity of Hydroxylated (E)-Stilbenes

Cedric J. Lion, = Charles S. Matthews, Malcolm F. G. Stevens, and Andrew D. Westwell
= pp 1292–1295
Publication Date (Web): February= 02, 2005 (Brief Article)
DOI: 10.1021/jm049238e
3D"Figure"
Figure 1

Boo= k Reviews

<= input type=3D"checkbox" onclick=3D"evalAll(this);" value=3D"10.1021/jm04= 0212x" name=3D"doi">
3D"Figure"
Figure 1

Introduct= ion to Enzyme and Coenzyme Chemistry. Second Edition By T. D. H. Bugg. B= lackwell Publishing, Oxford, U.K. x + 304 pp. 17.5 × 24 cm. ISBN = 1-4051-1452-5. $75.00.

D. Eric Wal= ters
p 1296
Publication Date (Web): February 0= 1, 2005 (Book Review)
DOI: 10.1021/jm040218m
<= /div>
3D"F=
<= div class=3D"trayHandle">
Fig= ure 1
<= /div>
=
For Selected Articles:
=
=
= =
= = =
=
Advertisements
3D"Advertisement"/
3D"SciFinder

Browse By Issue

= =
=

Search By Citation

= = = = = = =
 
Digital Obj= ect Identifier (DOI)
=
To jump to an article, select a journal and fill = in volume and article's first page or specify the DOI of the article= in the DOI box, and then click "Go".

Stay Current

Get your research ASAP.

=
Advertisements
3D"Advertisement"/
=
= = =
Copyright © 2008 American Chemical Society
1155 Sixteenth Street N.W., Washington, DC 20036
3D"Portico"/ 3D"COUNTER"/ 3D"CrossRef"/ ACS Publications is a partner of:
Technology Partner - Atypon Systems, Inc.
------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://pubs.acs.org/templates/jsp/style.css Content-Transfer-Encoding: 8bit /* for XSL debugging */ .xslDebugTemplate { color: #999999; font-size: 10px; font-family: sans-serif; padding-left: 2px; } .xslDebugNodePath { color: #ff0000; font-size: 10px; font-family: sans-serif; padding-left: 2px; } .xslDebugImport { color: #007f00; font-size: 10px; font-family: sans-serif; padding-left: 2px; } /* this is hack for , try to be W3C valid and still compatible with older browsers in modern browser ​ is ZERO WIDTH SPACE = invisible by it self in older browsers we need occupy as little space as possible, cannot use display: none because most browsers will ignore the ​ and won't wrap */ .wbr { font-family: "Lucida Sans Unicode", "Arial Unicode MS", sans-serif; font-size: 2pt; color: #fff; white-space: normal; letter-spacing: 0; word-spacing: 0; word-wrap: break-word; /* IE only */ } .noWrap { white-space: nowrap; } /* For multi-level ToC headings */ .tocHeading .subj-group { display: block; font-size: 90%; } /* boxed-text was originally rendered as blockquote */ div.boxed-text-, div.boxed-text-anchor, div.boxed-text-float { margin-left: 3em; } div.boxed-text-margin { /* no rule */ } .refnumber { text-align: left; vertical-align: top; } .references .note p { padding: 0em; margin: 0em; } /* TOC */ .articleEntry { margin-bottom: 1em; } /* OASIS table model, order of rules is important for correct overriding */ /* by default table cells will have borders, to disable border colsep/rowsep should be set to "0" */ .NLM_table-wrap td, .NLM_table-wrap th { border-right: 1px solid black; border-bottom: 1px solid black; } .NLM_table-wrap-foot p { margin: 0; } .NLM_table-wrap table { border: 1px solid black; border-spacing: 0px; border-collapse: collapse; width: 95%; } .NLM_table-wrap table.frame_none { border: none; } .NLM_table-wrap table.frame_left { border: none; border-left: 1px solid black; } .NLM_table-wrap table.frame_right { border: none; border-right: 1px solid black; } .NLM_table-wrap table.frame_top { border: none; border-top: 1px solid black; } .NLM_table-wrap table.frame_bottom { border: none; border-bottom: 1px solid black; } .NLM_table-wrap table.frame_sides { border: none; border-left: 1px solid black; border-right: 1px solid black; } .NLM_table-wrap table.frame_topbot { border: none; border-top: 1px solid black; border-bottom: 1px solid black; } table.rowsep0 td, table.rowsep0 th { border-bottom: none; } table.rowsep1 td, table.rowsep1 th { border-bottom: 1px solid black; } table.rowsep2 td, table.rowsep2 th { border-bottom: 3px double black; } col.rowsep0, tr.rowsep0 td, tr.rowsep0 th { border-bottom: none; } col.rowsep1, tr.rowsep1 td, tr.rowsep1 th { border-bottom: 1px solid black; } col.rowsep2, tr.rowsep2 td, tr.rowsep2 th { border-bottom: 3px double black; } tr th.rowsep0, tr td.rowsep0 { border-bottom: none; } tr th.rowsep1, tr td.rowsep1 { border-bottom: 1px solid black; } tr th.rowsep2, tr td.rowsep2 { border-bottom: 3px double black; } table.colsep0 td, table.colsep0 th { border-right: none; } table.colsep1 td, table.colsep1 th { border-right: 1px solid black; } table.colsep2 td, table.colsep2 th { border-right: 3px double black; } col.colsep0, tr.colsep0 td, tr.colsep0 th { border-right: none; } col.colsep1, tr.colsep1 td, tr.colsep1 th { border-right: 1px solid black; } col.colsep2, tr.colsep2 td, tr.colsep2 th { border-right: 3px double black; } tr th.colsep0, tr td.colsep0 { border-right: none; } tr th.colsep1, tr td.colsep1 { border-right: 1px solid black; } tr th.colsep2, tr td.colsep2 { border-right: 3px double black; } /* last element takes border from the table, have none on its own */ .NLM_table-wrap table tr.last td { border-bottom: none; } .NLM_table-wrap table tr td.last, .NLM_table-wrap table tr th.last { border-right: none; } .NLM_table-wrap .align_right { text-align: right; } .NLM_table-wrap .align_left { text-align: left; } .NLM_def-list { margin: 1em 0; } .NLM_def-list .NLM_title, .NLM_def-list .NLM_term-head, .NLM_def-list .NLM_def-head, .NLM_def-list .NLM_term { font-weight: bold; vertical-align: top; } .NLM_def-list .NLM_def { vertical-align: top; } /* "list tables" in context of real tables */ .NLM_table-wrap table tr td table.listgroup, .NLM_table-wrap table tr td table.listgroup td { border: none; width: auto; text-align: left; } /* NLM title and inlinehead (heading[@format='inline']), for historic reason without NLM_ prefix */ .title1, .title2, .title3, .title4, .title5, .inlinehead1, .inlinehead2, .inlinehead3, .inlinehead4, .inlinehead5 { font-weight: bold; } .searchNone0, .searchNone1, .searchNone2, .searchNone3, .searchNone4, .searchNone5, .searchNone6, .searchNone7, .searchNone8, .searchNone9 { color: inherit; background-color: inherit; font-weight: inherit; } .searchTerm0 { color: black; background-color: #ffff66; font-weight: bold; } .searchTerm1 { color: black; background-color: #a0ffff; font-weight: bold; } .searchTerm2 { color: black; background-color: #99ff99; font-weight: bold; } .searchTerm3 { color: black; background-color: #ff9999; font-weight: bold; } .searchTerm4 { color: black; background-color: #ff66ff; font-weight: bold; } .searchTerm5 { color: white; background-color: #880000; font-weight: bold; } .searchTerm6 { color: white; background-color: #00aa00; font-weight: bold; } .searchTerm7 { color: white; background-color: #886800; font-weight: bold; } .searchTerm8 { color: white; background-color: #004699; font-weight: bold; } .searchTerm9 { color: white; background-color: #990099; font-weight: bold; } .citation_source-book, .citation_source-journal { font-style: italic; } .dash { font-size: 13px; } .quote { margin: 1em 0em 1em 5em; display: block; } /* content is indexable */ .index { } /* entity images: A: static entity image from fs B: dynamic baseline C: dynamic bottom D: static text-bottom */ .entityA { } .entityB { border: 0px; vertical-align: baseline; } .entityC { border: 0px; vertical-align: bottom; } .entityD { border: 0px; vertical-align: text-bottom; } .toc_subarticle_style { font-size: 11px; font-family: Arial, Helvetica, sans-serif; } .toc_subarticle_authors_style { font-size: 10px; font-family: Arial, Helvetica, sans-serif; } .toc_subarticle_title_style { font-size: 11px; font-family: Arial, Helvetica, sans-serif; font-weight: bold; } .fromGoogle { border-style: solid; border-color: red; border-width: 2px 0pt; margin: 12px 0pt; padding: 2px 0pt; line-height: 20px; font-size: 12px; } .lilabel { } .smallcaps { font-variant: small-caps; } .strike { text-decoration: line-through; } .NLM_disp-formula { display: block; } a.roDisabled { color: GrayText; } .articleEntry .firstCell { text-align: right; vertical-align: top; width: 18px; padding-top: 0; } div.appendix span.title5 { display: block; } .sectionHeading{ background-color:#e1e1e1; } .sectionHeading th{ font-size: larger; } .artAuthors .NLM_bio { font-weight: normal; } .multiIssueToc .issueTitle { font-weight: bold; } .monospace { font-family: monospace; } table.formula { margin: 1em 0; clear: both; } .NLM_list-list_type-simple { list-style: none; display: block; } .IN_LIST-freeText, .IN_LIST-label, .IN_LIST-title { list-style: none; display: inline; margin: 0; padding: 0 } ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/style.css Content-Transfer-Encoding: 8bit body, .bodyLayout { margin: 0px; padding: 0px; border: 0px; border-spacing: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 11pt; } td { font-family: Arial, Helvetica, sans-serif; font-size: 11pt; } .leftRegion, .centerRegion, .rightRegion { margin: 0px; padding: 0px; border: 0px; } .logo { padding: 14px 0px; text-align: center; } .logo_bottom { padding-top: 20px; padding-bottom: 20px; text-align: center; } .welcome_user_text { font-size: x-small; font-weight: bold; padding: 1em; border-bottom: 1px solid #444; color: #444; } .pub_search_box { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; padding: 1em; margin-bottom: 1em; border-bottom: 1px solid #444; color: #444; } .pub_search_link { font-size: 10pt; font-weight: bold; margin-bottom: 5px; margin-top: 5px; } .menuXsubMenuDivider { text-align: center; } #hide { display:none } .art_title, .arttitle, .searchResultTitle { font-weight: bold; } .art_author { color: gray; } .art_meta { color: gray; } .error { color: red; } .citedByEntry { margin-bottom: 0.5em; } .citedBySection { margin-bottom: 2em; } .bullet { vertical-align: top; } .tocHeading .subj-group { display: block; font-size: 90%; } tr.resultItemNav { } a img { border-width: 0 } td.savedSearch { } .currencySymbol { font-weight: bold; } #showMailPage label { font-weight: bold; } #showMailPage label.checkBox { font-weight: normal; } div.p { margin: 1em 0; } #CreditCardDialog .required { color: #f00; } #CreditCardDialog label { margin: 1em 0; text-align: left; } .formHeading { font-weight: bold; } div.federation { margin-top:15px; font-size:1.1em; font-weight:bold; } .logoImg{ width:165px; height:108px; border:0; } table.offersOption { width:100%; padding:0 2em; } .offersOption td{ padding-bottom:1em; } .offersOption li{ list-style:none; } .offersOption tr.buttons{ text-align:right; } .deliveryFormat li{ list-style:none; display:inline; } .ecommOffers { font-weight: bold; } .addressLink { cursor: pointer; color: blue; } .federation select { width: 200px; } .federation label { margin-top: 10px; } ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=atypon-main.css Content-Type: text/css; charset=UTF-8; name=atypon-main.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/css/atypon-main.css Content-Transfer-Encoding: 8bit /* === Redefined Tags === */ body { width: 100%; height: 100%; margin: 0; padding: 0; font: 100% "Trebuchet MS", Arial, Helvetica, sans-serif; line-height: 1.125em; color: #000; text-align: center; background: #fff url(/templates/jsp/_style2/_achs/images/body-bg.gif) repeat-x; } a { color: #369; } a:visited { color: #369; } a:hover { text-decoration: none; } img { border: 0; } p { margin: 0 0 1em; padding: 0; } form { margin: 0; padding: 0; } h1 { margin: 0 0 .5em 0; padding: 0; font: bold 1.3em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #2d5073; } h2 { margin: 0; padding: 0 0 5px; font: bold 1em Arial, Helvetica, sans-serif; color: #304e96; } h3 { margin: 0; padding: 0; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #304e96; } h4 { margin: 0; padding: 0 0 3px; font: bold .95em "Trebuchet MS", Arial, Helvetica, sans-serif; } h5 { margin: 0; padding: 0 0 3px; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; } h6 { margin: 0; padding: 0 0 3px; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #444; } h1, h2, h3, h4, h5, h6 { line-height: 1.4em; } sup, sub { vertical-align: 0.4em; font-size: .8em; } sub { vertical-align: -0.4em; } hr { clear: both; display: block; height: 1px; margin: 2px 0 10px; background: #bbc5df; border: 0; } table { background: #fff; } blockquote { font: .8em Arial, Helvetica, sans-serif; } /* === MAIN STRUCTURE === */ #container { position: relative; display: block; width: 1000px; height: 100%; margin: 0 auto; padding: 0; text-align: left; } #header { position: relative; display: block; width: 1000px; z-index: 400; /* for Explorer */ } #banner-bg { background: #1e73b3; width: 100%; height: 20px; overflow: hidden; } #global-banner { margin: 0 auto; padding: 0; height: 20px; text-align: center; width: 1000px; } #global-banner ul { float: right; margin: 0; padding: 0; list-style: none; text-align: center; } #global-banner ul li { display: block; float: left; margin: 0; padding: 0; text-align: center; border-left: 1px solid #ccc; } #global-banner li.endRt { border-right: 1px solid #ccc; } #global-banner ul li a { display: block; width: 5em; height: 20px; margin: 0 0 10px 0; padding: 1px 0 0 0; font: .8em Verdana, Arial, Helvetica, sans-serif; color: #fff; text-decoration: none; text-align: center; } #global-banner ul li a:hover, #global-banner ul li#active-gb a:hover { background: #dfdfff; color: #000; } #global-banner li#active-gb a { background: #0f4d82; color: #fff; } #pubsTop { position: relative; width: 1000px; height: 65px; margin: 0; } #pubsLogo { float: left; width: 244px; padding: 12px 0 0; } #pubsTopNav { position: absolute; top: 7px; right: 7px; float: right; padding: 0; text-align: right; color: #fff; } #pubsTopNav a:link, #pubsTopNav a:visited, #pubsTopNav a:hover { font: .75em "Trebuchet MS", Arial, sans-serif; margin: 0 7px; text-decoration: none; } #pubsTopNav a:link, #pubsTopNav a:visited { color: #fff; } #pubsTopNav a:hover { text-decoration: underline; } #pubsTopNav #journalList { display: block; float: left; margin: 1px .3em 0 0; padding: 2px 6px; background: #27689f; color: #fff; border: 1px solid #3c74a4; } #pubsTopNav #journalList:hover { color: #fff; background: #369; text-decoration: none; } #journalTop { display: block; width: 1000px; min-height: 80px; background: transparent; } #journalLogo { margin: 15px 0 7px; } #impactImage { display: block; width: 1000px; height: 125px; padding: 15px 0 7px; background: transparent; } #nav-wrap-pubs, #nav-wrap-journal, #nav-wrap-arrc, #nav-wrap-lrc { clear: both; position: relative; width: 1000px; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/navbar-bg.gif) no-repeat; z-index: 4000; } #profile-wrap { position: absolute; top: -28px; right: 0; height: 21px; background: transparent url(/templates/jsp/_style2/_achs/images/profile.png) no-repeat left top; } #profile { height: 100%; margin: 0 0 0 3px; z-index: 1000; } #profile div { height: 100%; padding: 1px 7px 0 4px; font-size: .7em; color: #fff; white-space: nowrap; } #profile div span { margin-right: 5px; } #profile div a { margin: 0 2px; color: #fff; } #profile div a img { position: relative; top: 1px; } body.journal #profile-wrap, body.arrc #profile-wrap, body.lrc #profile-wrap { top: -25px; right: 0; height: 24px; background: transparent; } body.journal #profile, body.arrc #profile, body.lrc #profile { background: transparent; } body.journal #profile div, body.arrc #profile div, body.lrc #profile div { color: #333; } body.journal #profile div a, body.arrc #profile div a, body.lrc #profile div a { color: #369; } #search-wrap { position: absolute; top: 40px; right: 15px; display: block; padding: 0; background: url(/templates/jsp/_style2/_achs/images/searchbox-tl.png) no-repeat left top; } #search { display: block; padding: 6px 0 0; background: url(/templates/jsp/_style2/_achs/images/searchbox-tr.png) no-repeat right top; } #searchJournal { display: block; margin: 0; padding: 0 0 0 7px; background: #fbf9b9; } #searchJournal * { margin: 0; padding: 0; font-size: .75em; font-family: Arial, Helvetica, sans-serif; } #searchJournal label, #searchJournal label cite { font-size: 1em; color: #09477a; } #searchJournal h4 { margin: 0 0 5px; padding: 0; font: bold .9em Arial, Helvetica, sans-serif; color: #09477a; } #advancedLink { position: absolute; top: 0; right: 2px; margin: 0; font: 1em Arial, Helvetica, sans-serif; text-align: right; } #advancedLink a { display: block; margin: 7px 9px 0 0; } #search #searchSub { margin: 0 7px; } #search #searchCollection { margin: 7px 0 0 2px; padding: 0 7px 2px 0; } #searchCollection * { line-height: normal; vertical-align: middle; } #searchJournal #thisjrnl { font-size: 1em; } #searchJournal #alljrnl { margin: 0 0 0 15px; font-size: 1em; } #searchFooter { position: absolute; bottom: -6px; left: 6px; right: 6px; display: block; height: 6px; margin: 0; background: #fbf9b9; } #searchBL { position: absolute; bottom: -6px; left: 0; width: 6px; height: 6px; background: transparent url(/templates/jsp/_style2/_achs/images/searchbox-bl.png) no-repeat bottom left; } #searchBR { position: absolute; bottom: -6px; right: 0; width: 6px; height: 6px; background: url(/templates/jsp/_style2/_achs/images/searchbox-br.png) no-repeat bottom right; } #cobranding { position: absolute; top: 0; left: 0; height: 18px; margin: 2px 0 0; vertical-align: middle; font: 11px Verdana, Arial, Helvetica, sans-serif; color: #fff; z-index: 6000; } #alertSitewide, #alertJournals, #alertGroupAccess, #alertDiscontinued { clear: both; float: left; width: 998px; margin: 7px 0 0; border: 1px solid #ccc; background: #ffc; } #alertDiscontinued { border: 1px solid #900; color: #600; } #alertSitewide span, #alertJournals span, #alertGroupAccess span, #alertDiscontinued span { display: block; margin: 2px 7px; font-size: .9em; } #mainBody { clear: both; float: left; width: 1000px; margin: 10px 0 20px; padding: 0 0 7px; background: #eef6fc url(/templates/jsp/_style2/_achs/images/topright.gif) right top no-repeat; } #content-wrap { float: left; width: 805px; margin: 0 0 7px; padding: 7px 0 0; background: transparent url(/templates/jsp/_style2/_achs/images/topleft.gif) left top no-repeat; display: inline; /* EXPLORER SUCKS BIGTIME */ } #content { float: left; width: 798px; margin: 0 0 0 5px; padding: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #contentFooter { clear: left; float: left; width: 798px; margin: 0 0 0 5px; padding: 0; background: #ffc; } #rightColumn { clear: none; float: right; width: 182px; margin: 7px 5px 0 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .rtColBox { clear: both; display: block; margin: 0 0 7px; padding: 10px; background: #fff; border: 1px solid #b6b6e1; font-size: .75em; line-height: normal; } .rtColBox h2, .rtColBox h3 { margin: 0 0 7px; font-size: 1.1em; line-height: normal; background: transparent !important; } .rtColBox h4 { margin: 10px 0 0; padding: 0; font-size: 1em; } #rightColumn a { text-decoration: none; } #rightColumn a:hover { text-decoration: underline; } #rightColumn ul, #sideCol .sideColBox ul { margin: 0; padding: 0; } #rightColumn ul li, #sideCol .sideColBox ul li { margin: 0 0 3px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1em; } #rightColumn .blueBG ul li, #rightColumn .darkBlueBG ul li { margin: 0 0 2px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-white-trans.gif); } #rightColumn .blueBG a, #rightColumn .blueBG a:visited, #rightColumn .darkBlueBG a:visited { color: #fff; } .rtColBox a img { text-decoration: none; } .findIssue { background: #2b578a; } .findCitation { background: #6982ba; } .findIssue h3, .findCitation h3 { color: #fff; } #issueJump, #citationJump { display: block; margin: 0; padding: 0; } #issueJump .footer, #citationJump .footer { position: relative; height: 18px; margin: 12px 0 0; } #issueJump .footer a { position: relative; top: 4px; color: #fff; text-decoration: underline; } #issueJump .footer a:hover { text-decoration: none; } #issueJump div { display: block; height: 1.8em; margin: 0 0 7px; } #issueJump select { display: block; width: 150px; } #rightColumn .rtColBox .formSubmit, body.search #citationJump .footer .formSubmit { position: absolute; top: 0; right: 0; display: block; width: 25px; height: 17px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/go.png); cursor: pointer; } #citationJump div { margin: 0 0 7px; } #citationJump #or { width: 162px; height: 14px; margin: 7px 0; background: url(/templates/jsp/_style2/_achs/images/citFndOr.png) no-repeat; } #citationJump .info { float: left; width: 50px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/info.png); cursor: pointer; } #issueJump *, #citationJump * { font-size: 12px; } #citationJump option { width: 25em; } .blueBG { background-color: #1e73b3; } .darkBlueBG { background-color: #00497e; } .blueBG *, .darkBlueBG * { color: #fff; } .blueBG #submit, .darkBlueBG #submit { color: #000 !important; } .sciFinderLogin { padding: 0; } .adSpace { color: #999; text-align: center; padding-bottom: 5px; } .adSpace div { margin: 0 0 3px; } .adSpace img { margin: 0 0 3px; border: 1px solid #ccc; } .adSpace .adInfo { margin: 10px 0 0 !important; } #pageFooter-wrap { clear: both; float: left; width: 100%; margin: 0; padding: 10px 0; font: .7em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #fff; background: #0f4d82; text-align: left; } #pageFooter { width: 1000px; margin: 0 auto; } #btmCopyright { float: left; } #pageFooterLinks { float: right; margin: 0; } #pageFooter a, pageFooter a:visited { color: #fff; text-decoration: none; } #pageFooter a:hover { text-decoration: underline; } #pageFooterLinks a:link, #pageFooterLinks a:visited, #pageFooterLinks a:hover { font: 1em "Trebuchet MS", Arial, sans-serif; margin: 0 .7em 0 .3em; } .pageFooterPartners { clear: right; float: right; width: 60%; margin-top: 10px; text-align: right; } .pageFooterPartners span, .pageFooterPartners img { float: right; margin: 0 0 0 10px; } /* === Pubs Home Page === */ #hpTopBox { float: left; width: 796px; margin: 0 0 10px; padding: 0 0 5px; background: #fff; border: 1px solid #b6b6e1; } #hpTopBox * { line-height: 1.4em; } body.pubs #hpTopBox h1 { width: 515px; margin: 10px; padding: 0; font: bold 1em "Trebuchet MS", Arial, sans-serif; color: #2d5073; } body.pubs #hpTopBox p { width: 515px; margin: 0 7px 7px 10px; font-size: .8em; } #aboutSubBox { float: right; width: 250px; margin: 7px; background: #d8e3ed; display: inline; /* EXPLORER SUCKS BIGTIME */ } #hpTopBox #aboutSubBox p { width: auto; margin: 10px; } #hpTopBox #aboutSubBox div { margin: 10px; font-size: .8em; } #hpLeft { float: left; width: 432px; background: #fff url(/templates/jsp/_style2/_achs/images/journals-bg.jpg) no-repeat; border: 1px solid #b6b6e1; } #hpLeft h2 { margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } #hpLeft h3 { margin: 10px 0 0 10px; font-size: 1em; line-height: normal; } #journalListView { margin: 0 10px; font-size: .8em; } #journalListView div { float: left; width: auto; margin: 0 7px 15px 0; padding: 0; } #journalListView a { display: block; padding: 4px 7px; font: 1em Verdana, Arial, Helvetica, sans-serif; text-decoration: none; } #journalListView #azLink { font-weight: bold; background: #eee; color: #000; border: 1px solid #ccc; } #azView, #catView { clear: left; display: block; } #catView { display: none; } #azView ul, #catView ul { display: block; margin: 0 10px 15px 10px; padding: 0 !important; } #azView ul li, #catView ul li { display: block; margin: 0 0 2px; padding: 0 !important; list-style: none; font-size: .8em; } #azView ul li div, #catView ul li div { font-size: .9em; margin: 0 0 0 15px; } #azView a { text-decoration: none; } #azView a:hover { text-decoration: underline; } #catView ul li { font-weight: bold; margin: 0 0 5px; } #catView ul li ul { margin: 5px 10px 10px 30px; padding: 0; } #catView ul li ul li { display: list-item; font-weight: normal; font-size: 1em; margin: 0 0 2px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #catView ul li a { color: #333; text-decoration: none; } #catView ul li a:hover { color: #900; text-decoration: none; } #catView ul li ul li a { color: #369; } #catView ul li ul li a:hover { color: #369; text-decoration: underline; } #azView .history, #catView .history { display: inline; position: relative; top: 3px; left: 3px; margin: 0; padding: 0; } #azView .history img, #catView .history img { margin: 0; padding: 0; border: 0; } #azView .history ul, #catView .history ul { margin: 4px 0 10px 30px; padding: 0; display: none; } #azView .history ul li, #catView .history ul li { display: list-item; margin: 0; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1em; } #azView .column, #catView .column { margin: 0 10px 0 0; } #hpRight { float: right; width: 358px; overflow: hidden; } #hpRight .hpBox { margin: 0 0 7px; padding: 0 0 10px 0; border: 1px solid #b6b6e1; background: #fff; } #hpRight .hpBox h2 { display: block; margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } .feedburnerFeedBlock ul { clear: left; padding: 0; } .feedburnerFeedBlock ul li { margin: 10px 7px 0 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; list-style: none !important; } .feedburnerFeedBlock .headline { font-weight: bold; } p.date { margin: 0; color: #555; font-size: .9em !important; } .feedburnerFeedBlock div { margin: 0 0 1em; font-size: .9em !important; } .feedflare, #creditfooter { display: none; } #hpRight .hpBox p, #hpRight .hpBox div { font-size: .8em; } #hpRight .hpBox div div, #hpRight .hpBox div p { font-size: 1em; line-height: normal; } #textArea #sideCol p.feedTitle, #sideCol .sideColBox p.feedTitle { font-size: 1.13em; font-weight: bold; } #textArea #sideCol p.feedTitle a:link, #textArea #sideCol p.feedTitle a:visited, #sideCol .sideColBox p.feedTitle a:link, #sideCol .sideColBox p.feedTitle a:visited { color: #900; text-decoration: none; } #textArea #sideCol p.feedTitle a:hover, #sideCol .sideColBox p.feedTitle a:hover { color: #900; text-decoration: underline; } .item { clear: left; margin: 0 7px 10px; } .item .flLeft { margin-right: 10px; margin-bottom: 10px; } .item h2 { display: block; margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } .item ul { margin: 5px 0 1.4em; padding: 0; } .item ul li { margin: 0 0 4px 15px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); line-height: normal; } .item h3 { font: bold 1em "Trebuchet MS", Arial, Helvetica, sans-serif; } .item h3 a { text-decoration: none; } .item h3 a:hover { text-decoration: underline; } .item p { font-size: .8em; } #hpRight h4 { font: bold .9em Verdana, Arial, Helvetica, sans-serif; margin: 0 0 10px; padding: 0; } #hpRight #featuresList h4 { margin: 0 0 15px; } #hpRight h5 { margin: 0; padding: 0; font: normal .9em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #555; } #hpRight #newsList .link { margin-top: -1em; font-size: .875em; line-height: normal; } #hpRight .nav { display: block; text-align: right; margin: 15px 10px 0 0; } #hpRight .nav a { font-size: .875em; } #newsList, #cenList, #featuresList { margin: 0 0 0 10px; } #newsList img, #featuresList img { float: left; margin: 0 10px 0 0; } #newsList .item, #featuresList .item { clear: left; margin: 0 0 1em; min-height: 88px; } #cenList img { float: right; margin: 5px 10px 10px; } #cenNewsBox div { margin: 0 10px 10px; } .books .item { margin: 0 0 7px 10px; min-height: 88px; } .books img { float: left; margin: 0 10px 15px 0; } /* === Journal Home Page and 2ndary Pages === */ #highlightBox { position: relative; float: left; width: 410px; height: 255px; margin: 5px 0 0 5px; border: 1px solid #666; overflow: hidden; } #highlightBox h2 { display: block; width: 396px; height: 20px; line-height: 20px; margin: 0; padding: 2px 7px 0 7px; background: #333; color: #fff !important; font: 14px Verdana, Arial, Helvetica, sans-serif; vertical-align: middle; } #highlightNav { position: absolute; bottom: -1px; left: 0; width: 410px; height: 28px; border-top: 1px solid #666; background: #333; color: #fff; } #highlightNav .prev, #highlightNav .next { position: absolute; top: 5px; left: 311px; display: block; width: 25px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/prevSlide.gif) 0 0; text-align: right; } #highlightNav .next { left: 343px; background: url(/templates/jsp/_style2/_achs/images/nextSlide.gif) 0 0; } #highlightPlay, #highlightPause { position: absolute; bottom: 4px; right: 0; display: block; width: 35px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/highlightPlay.gif) 0 0; } #highlightPause { background: url(/templates/jsp/_style2/_achs/images/highlightPause.gif) 0 0; } #highlightNav .prev:hover, #highlightNav .next:hover, #highlightPlay:hover, #highlightPause:hover { background-position: 0 -18px; } ul#slideSelect { float: left; width: 320px; height: 27px; margin: 5px 7px 0 0; padding: 0 35px 0 0; line-height: 28px; vertical-align: middle; display: inline; } ul#slideSelect li { float: left; margin: 0 3px; list-style: none; display: inline; } ul#slideSelect li a { float: left; margin: 0; padding: 2px 7px; border: 1px solid #ccc; text-align: center; text-decoration: none; color: #fff; font: 10px Arial, Helvetica, sans-serif; display: inline; } ul#slideSelect li a:hover { background: #eee; color: #000; } ul#slideSelect li.current a { color: #f00; border: 1px solid #f00; } #slides { float: left; width: 410px; min-height: 206px; margin: 0; padding: 0; } #slides .slide { min-height: 206px; } #slides a:hover { text-decoration: none; } #slides .fullimg a { color: #fff; text-decoration: none; } #slides img.highlightImg { width: 410px; height: 210px; border: 0; } #slides span.title { position: absolute; left: 0; bottom: 27px; display: block; width: 400px; margin: 0; padding: 5px; background: #000; font: normal 13px "Trebuchet MS", Arial, Helvetica, sans-serif; filter: alpha(opacity=80); -moz-opacity: 0.8; -khtml-opacity: 0.8; opacity: 0.8; } #slides h3 { margin: 10px 7px 3px; padding: 0; font-size: .9em; } #slides p { margin: 0 7px 1em; font-size: .8em; } #slides .flLeft { margin-left: 7px; } #slides .flRight { margin-right: 7px; } #aboutJournalBox { position: relative; float: right; width: 358px; min-height: 240px; margin: 5px 7px 7px 0; font-size: .75em; text-align: left; display: inline; /* EXPLORER SUCKS BIGTIME */ } #aboutJournalBox .journalCover { position: absolute; top: 2.4em; left: 0; width: 125px; padding: 0 0 5px; background: #e6e6e6; border: 1px solid #ccc; text-align: center; font-size: .9em; } #aboutJournalBox img { margin: 5px auto; border: 1px solid #b6b6e1; } #aboutJournalBox h2 { margin: 0 10px 0 0; font-size: 1.3em; } #aboutJournalBox p { margin: 0 7px 0 140px; } #aboutJournalBox ul { margin: 7px 0 0 140px; padding: 0; } #aboutJournalBox ul li { margin: 0 7px 3px 17px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #aboutJournalBox ul li.noBullet { margin: 0 0 7px; list-style: none; list-style-image: none; color: #444; font-weight: bold; } #copub { margin: 7px 7px 0 140px; padding: 5px 0; border: 1px solid #aaa; font-size: .875em; } #copub img { float: left; margin: 3px 5px 3px 3px; border: 0; } #contentMain { position: relative; clear: left; float: left; width: 798px; } #fullPage { width: 967px; padding: 10px; background: #fff; border: 1px solid #ccc; font-size: .875em; } #textArea { width: 796px; min-height: 45.35em; margin: 0; padding: 0; background: #fff; border: 1px solid #b6b6e1; } #textArea.fullPage { width: 987px; } #textArea h1, #textArea h2, #textArea h3, #textArea h4, #textArea h5, #textArea h6, #textArea p, #textArea ul, #textArea ol, #InstitutionAdmin_Activation div { margin-top: 4px; margin-left: 10px; margin-right: 10px; } #textArea h2 { margin-top: 1.3em; } #textArea h2.subtitle { margin-top: 0; margin-bottom: .7em; font-size: 1em; color: #333; } #textArea p { margin-top: 0; font-size: .8em; } #textArea ul, #textArea ol { padding-left: 40px; } #textArea li { font-size: .8em; } #textArea li li { font-size: 1em; } #textArea dl { margin: 0 11px 11px; font: normal .8em "Trebuchet MS", Arial, Helvetica, sans-serif; } #textArea dl dt { margin: 15px 0 0; font-weight: bold } #textArea dl dd { margin: 0; } #articleArea { float: left; width: 608px; margin: 0; padding: 7px 0 0; background: #fff; border: 1px solid #b6b6e1; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleAreaHeader { position: relative; float: left; width: 100%; height: 29px; margin: 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/articleView-tabs-bg.gif) no-repeat; } #articleAreaHeader ul { float: left; height: 25px; margin: 4px 0 0; padding: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleAreaHeader ul li { float: left; width: auto; height: 25px; margin: 0; padding: 0; list-style: none; } #articleAreaHeader ul li a { display: block; width: 92px; height: 25px; background: transparent url(/templates/jsp/_style2/_achs/images/articleView-tabs.gif); } #articleAreaHeader ul li a span { display: none; } #rssBox { position: absolute; top: 0; right: 0; } #rssBox a { display: block; width: 92px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/rssbox.gif); } /* === Initial States === */ #articleAreaHeader ul li #justAcceptedTab { margin: 0 0 0 4px; background-position: -4px -4px; } #articleAreaHeader ul li #justPublishedTab { margin: 0 0 0 3px; background-position: -99px -29px; } #articleAreaHeader ul li #currentIssueTab { margin: 0 0 0 3px; background-position: -194px -4px; }#articleAreaHeader ul li #mostReadTab { margin: 0 0 0 3px; background-position: -289px -4px; } #articleAreaHeader ul li #mostCitedTab { margin: 0 0 0 3px; background-position: -384px -4px; } /* === Hover States === */ #articleAreaHeader ul li #justAcceptedTab:hover { background-position: -4px -54px !important; } #articleAreaHeader ul li #justPublishedTab:hover { background-position: -99px -54px !important; } #articleAreaHeader ul li #currentIssueTab:hover { background-position: -194px -54px !important; } #articleAreaHeader ul li #mostReadTab:hover { background-position: -289px -54px !important; } #articleAreaHeader ul li #mostCitedTab:hover { background-position: -384px -54px !important; } #justAcceptedArticles, #justPublishedArticles, #currentIssueArticles, #mostReadArticles, #mostCitedArticles { clear: left; width: 609px; margin: 0; padding: 15px 0 0; font-size: .875em; } #justAcceptedArticles, #currentIssueArticles, #mostReadArticles, #mostCitedArticles { display: none; } #articleArea h2 { margin: 0 3px; padding: 4px 7px; font-size: 1.15em; } #articleArea p { margin: 0 10px 15px; font-size: .85em; line-height: normal; } .articleListHeader, .articleListFooter { float: left; width: 587px; margin: 0 0 10px 11px; font-size: .875em; display: inline; } .articleListHeader label, .articleListFooter label { margin: 0 15px 0 0; } .selectAll { float: left; } .articleOptions { float: left; margin: 0 0 0 7px; } .articleOptions a { float: left; cursor: pointer; } .articleOptions a.viewAbs { width: 85px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/viewAbs.png); } .articleOptions a.downCitations { width: 108px; height: 18px; background-image: url(/templates/jsp/_style2/_achs/images/downCit.png); } .articleOptions div.sciFinderOptions { position: relative; float: left; margin-left: 1px; z-index: 300; /* for Explorer */ } .articleOptions .sciFinderOptions a.pulldownLink { display: block; width: 126px; height: 18px; background-image: url(/templates/jsp/_style2/_achs/images/sciFinderOptions.png); } .articleOptions .sciFinderOptions ul { display: block; position: absolute; left: 0; top: 18px; margin: 0; padding: 0; list-style: none; z-index: 300; } .articleOptions .sciFinderOptions ul li { clear: left; float: left; margin: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .articleOptions .sciFinderOptions ul li a { display: block; width: 126px; padding: 2px 0 0; border-bottom: 1px solid #fff; background: #69c; color: #fff; text-decoration: none; } .articleOptions .sciFinderOptions ul li a:hover { background: #369; } .articleOptions .sciFinderOptions ul li a span { display: block; margin: 0 2px 0 3px; font-size: 11px; } a.showThumbs { float: right; width: 123px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/showAllThumbs.png); background-position: 0 0; } a.showThumbs:hover { cursor: pointer; } .moreLink { float: right; margin: 4px 10px 0 0; font-size: .85em; text-align: right; line-height: normal; } .viewAllLink { width: 100%; margin: 0 0 15px; font-size: .9em; text-align: center; } #sideCol { float: right; width: 182px; margin: 0; } .sideColBox { display: block; margin: 0 0 10px; padding: 7px; background: #fff; border: 1px solid #b6b6e1; font-size: .8em; line-height: normal; } .sideColBox h2 { margin: 0; padding: 0 0 10px; font-size: 1em; line-height: normal; } .sideColBox h3 { font-size: 1em; line-height: normal; } .sideColBox h4 { font-size: 1.05em; line-height: normal; } #sideCol .sideColBox ul.listBox { margin: 0; padding: 0; } #sideCol .sideColBox ul.listBox li { margin: 0; padding: 4px; margin: 7px 0 0; border: 1px solid #ccc; background-color: #eee; list-style: none; font-size: .9em; } #sideCol .sideColBox div p { font-size: 1em; } .sideColBox p { font-size: .9em; } .sideColBox a { text-decoration: none; } .sideColBox a:hover { text-decoration: underline; } #sideCol .announcements { background: #cfd7e9; border: 1px solid #8f96ca; } /* === Journal TOC === */ body.toc #contentMain { font-size: .875em; } body.toc #articleArea { width: 798px; background: transparent; border: 0; } #tocHead { position: relative; float: left; width: 796px; margin: 0 0 10px; padding: 2px 0 7px; background: #fff; border: 1px solid #b6b6e1; } #asapHead { float: left; width: 788px; margin: 0 0 10px; padding: 0 0 0 10px; } #tocHead #specialIssueNotice { margin: 3px 4px; padding: 0 6px 5px; background: none; font: bold .9em Verdana, Arial, Helvetica, sans-serif; color: #500; } #tocHead p { margin-left: 7px; font-size: .8em; } #tocHead a { text-decoration: none; } #tocHead a:hover { text-decoration: underline; } #tocHead h2 { height: 29px; margin: 0 2px; padding: 7px 0 0 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; line-height: normal; } #asapHead h2 { font-size: 1.1em; padding-bottom: 0; line-height: normal; } #asapHead p { font-size: .875em; } #issueNav { position: absolute; top: 2px; right: 0; width: 211px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/issueNav.gif) no-repeat 0 -58px; } #issueNav a { position: absolute; top: 0; display: block; height: 29px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/issueNav.gif) no-repeat; } #issueNav .previous { left: 0; width: 115px; background-position: 0 0; } #issueNav .next { left: 115px; width: 96px; background-position: -115px 0; } #issueNav .previous:hover { background-position: 0 -29px; } #issueNav .next:hover { background-position: -115px -29px; } #issueNav a span { margin-left: -5000px; } #tocCover { float: left; width: 121px; margin: 7px 0 0 5px; border: 1px solid #bfd3e3; text-align: center; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } #tocCover img { border: 1px solid #ccc; margin: 3px auto; } #tocMenu { float: left; width: 655px; margin: 7px 0 7px 7px; } #tocMeta { float: left; width: 150px; margin: 0 0 0 7px; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } #date { font-weight: bold; } #tocNav { width: 460px; float: left; margin: 0 0 0 5px; } #tocNav h4 { margin: 0; font-size: .8em; color: #444; } #tocNav ul { clear: none; display: block; width: 586px; margin: 3px 0 0 0; padding: 0; } #tocNav ul li { float: left; width: 148px; margin: 0 0 4px 17px; padding: 0 0 7px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font: 10px "Trebuchet MS", Arial, sans-serif; line-height: normal; vertical-align: middle; text-transform: uppercase; } #tocNav li img { margin-right: 2px; } #tocNav a:visited { color: #369; } #tocMenu #sampleNotice { clear: left; float: left; width: 95%; margin: 15px 7px 0 7px; padding: 3px; background: #daebe1; font-size: .8em; line-height: 15px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #sampleNotice img, #sampleNotice span { line-height: 15px; vertical-align: middle; } #sampleNotice img { width: 44px; height: 13px; } #tocMenu #coverDesc { clear: left; margin: 0 7px 7px 7px; padding: 15px 0 0; font-size: .8em; } #tocMenu #coverDesc a { text-decoration: underline; } #tocMenu #coverDesc a:hover { text-decoration: none; } #tocHead .description { margin: 0 9px; padding: 0; font-size: .8em; } #tocHead .blurb { margin: 0 7px; font-size: .8em; } #asapHead .blurb { margin: 0; font-size: .8em; } #acNotice { clear: both; margin: 0 0 10px; padding: 3px 2px; border: 1px solid #ccc; background: #fcfcfc; font-size: .8em; } #acNotice img { margin: 0 3px; vertical-align: middle; } #acNotice span, #acNotice a { vertical-align: bottom; } body.toc .articleListHeader, body.toc .articleListFooter { width: 786px; margin-left: 12px; } body.toc .articleListFooter { margin-top: 10px; } body.search .articleListHeader, body.search .articleListFooter { width: 633px; } body.user .articleListHeader { width: 805px; font-size: .8em !important; } body.user .articleListFooter { width: 805px; font-size: .8em !important; } .articleGroup, .mostArticles { clear: both; margin: 10px 0 0; background: #fff; } .ASAP { border-top: 1px solid #bfd3e3; } .articleGroupHead { background: #6982ba url(/templates/jsp/_style2/_achs/images/toc-h3-tl.gif) no-repeat left top; } .articleGroup h3 { display: block; padding: 4px 7px 3px 10px; background: url(/templates/jsp/_style2/_achs/images/toc-h3-tr.gif) no-repeat right top; font-size: .8em; color: #fff; text-transform: uppercase; } .articleGroup h4 { display: block; padding: 3px 7px 7px 10px; font-size: .875em; color: #600; } .articles { padding: 10px 0 0; border: 1px solid #bfd3e3; border-top: 0; height: 1%; } .mostArticles .articles { border: 1px solid #bfd3e3; } #mostNav { float: left; margin: 0 0 15px; } #mostNav h3 { float: left; margin: .2em 0 0 10px; padding: 0; font-size: 1em; color: #000; } #mostNav ul { float: left; margin: 0 0 0 10px; padding: 0; list-style: none; } #mostNav ul li { float: left; margin: 0 5px; } #mostNav ul li a { text-decoration: none; } #mostNav ul li span { display: block; padding: 1px 5px; border: 1px solid #ccc; background: #eee; font-size: .875em; } #mostNav ul li a:hover span { background: #369; color: #fff; } #mostNav ul li.onPage span { font-weight: bold; color: #000; } /* === Article Boxes === */ .articleBox { position: relative; clear: both; margin: 0 10px 15px; padding: 0; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; height: 1%; } .articleCheck { position: absolute; top: 0; left: 0; width: 20px; margin: 3px 0 0; } .articleBox a { color: #35659a; text-decoration: none; } .articleBox a:hover { text-decoration: underline; } .articleBoxMeta { float: left; width: 385px; margin: 5px 0 0 20px; font: .875em "Trebuchet MS", Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } body.toc .articleBoxMeta { width: 550px; } body.search .articleBoxMeta { width: 410px; } #textArea .articleBoxMeta { font-size: .95em; } #aiContent .articleBoxMeta { width: 580px; } #articleArea .articleBox h2 { margin: 0 0 5px 0; padding: 0; background: transparent; } .articleBox h2 a { color: #000; } .articleAuthors { margin: 0 0 5px; } .manType { color: #600; } .articleLinksIcons { float: right; width: 160px; margin: 7px 5px 7px 0; padding: 0 0 0 7px; text-align: left; font: .875em Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } body.toc .articleLinksIcons, body.user .articleLinksIcons { width: 170px; } .articleLinksIcons div { margin: 0 0 15px; } .articleLinksIcons .icons { margin-bottom: 5px; } .articleLinksIcons ul, #textArea .articleLinksIcons ul { margin: 0 0 15px; padding: 0; list-style: none; } .articleLinksIcons ul li, #textArea .articleLinksIcons ul li { margin: 0 0 2px; padding: 0; } body.user #textArea .articleLinksIcons ul li { font-size: 1em; } .articleLinksIcons ul li a, #textArea .articleLinksIcons ul li a { margin: 0 4px 2px 0; } .articleLinksIcons ul a img { margin: 0 4px 0 0; } .articleLinksIcons div div { margin: 0 0 2px; } .articleBox .icons div { clear: left; display: block; margin: 0 0 2px; color: #444; line-height: 1.5em; vertical-align: middle; } .articleBox .icons img { float: left; margin: 0 4px 0 2px; } .articleBoxMeta .icons { float: left; margin: 5px 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .figureTray-wrap { clear: both; display: block; width: 100%; background: url(/templates/jsp/_style2/_achs/images/tray-bg-r.gif) no-repeat right top; } .figureTray { display: block; width: 100%; padding: 0; background: url(/templates/jsp/_style2/_achs/images/tray-bg-l.gif) no-repeat left top; text-align: center; } .figureBox { display: block; min-height: 160px; width: 100%; margin: 0; padding: 0; } .articleFigure { margin: 0 auto; background: transparent; } .articleFigure img { margin: 0 0 7px; padding: 7px; border: 1px solid #ccc; } #justAcceptedArticles .articleFigure, #justPublishedArticles .articleFigure, #currentIssueArticles .articleFigure, #mostReadArticles .articleFigure, #mostCitedArticles .articleFigure { overflow: hidden; } .articleFigure img.tocGraphic { max-width: 540px; max-height: 160px; } .trayHandle { position: relative; display: block; width: 100%; height: 19px; margin: 0; padding: 3px 0; background: url(/templates/jsp/_style2/_achs/images/handle-bg.gif) no-repeat right bottom; text-align: right; } .figureBox .trayHandle { margin: 7px 0 0; background: #e4e2e2; } .figureNav { left: 0; width: 100%; height: 19px; text-align: center; } .figureNav span { line-height: 20px; vertical-align: middle; font-size: .8em; } .figureNav a { position: absolute; top: 2px; display: block; height: 19px; } .figureNav a.prev { left: 150px; width: 64px; background: url(/templates/jsp/_style2/_achs/images/previousFig.gif) no-repeat 0 0; } .figureNav a.prev:hover { background-position: 0 -20px; } .figureNav a.next { right: 167px; width: 47px; background: url(/templates/jsp/_style2/_achs/images/nextFig.gif) no-repeat 0 0; } .figureNav a.next:hover { background-position: 0 -20px; } body.toc a.prev, body.user a.prev { left: 233px; } body.toc a.next, body.user a.next { right: 250px; } body.search a.prev { left: 190px; } body.search a.next { right: 197px; } .trayHandle .weo { position: absolute; top: 2px; left: 10px; display: block; width: 96px; height: 19px; overflow: hidden; } .trayHandle a.show, .trayHandle a.hide { position: absolute; top: 3px; right: 0; display: block; width: 118px; height: 19px; } .trayHandle a.show { background: url(/templates/jsp/_style2/_achs/images/showThumbs.gif) no-repeat 0 0; } .trayHandle a.show:hover { background-position: 0 -19px; } .trayHandle a.hide { background: url(/templates/jsp/_style2/_achs/images/hideThumbs.gif) no-repeat 0 0; } .trayHandle a.hide:hover { background-position: 0 -19px; } /* === ARTICLE === */ #articleContent { float: left; width: 796px; margin: 0 0 20px 5px; padding: 0; border: 1px solid #b6b6e1; background: #fff url(/templates/jsp/_style2/_achs/images/articleContent-bg.gif) repeat-y right top; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleContent h3 { font-size: 1em !important; } #articleHead { position: relative; clear: both; margin: 0; padding: 2px 0 0; background: #fff; } #articleNav, #articleNavC, #articleNavD { position: absolute; top: 2px; right: 0; width: 227px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/articleNav.gif) no-repeat 0 -58px; } #articleNav a, #articleNavC a, #articleNavD a { position: absolute; height: 29px; background: url(/templates/jsp/_style2/_achs/images/articleNav.gif); } #articleNavC, #articleNavC a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-ASAP.gif); } #articleNavD { width: 268px; } #articleNavD, #articleNavD a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-JAM.gif); } #articleNav .previous, #articleNavC .previous, #articleNavD .previous { left: 0; width: 65px; background-position: 0 0; } #articleNav .previous:hover, #articleNavC .previous:hover, #articleNavD .previous:hover { background-position: 0 -29px; } #articleNav .next, #articleNavC .next, #articleNavD .next { left: 65px; width: 64px; background-position: -65px 0; } #articleNav .next:hover, #articleNavC .next:hover, #articleNavD .next:hover { background-position: -65px -29px; } #articleNav .tocLink, #articleNavC .tocLink, #articleNavD .tocLink { left: 129px; width: 93px; background-position: -129px 0; } #articleNavD .tocLink { width: 134px; } #articleNav .tocLink:hover, #articleNavC .tocLink:hover, #articleNavD .tocLink:hover { background-position: -129px -29px; } #articleNav span, #articleNavB span, #articleNavC span, #articleNavD span, #articleNavE span, #articleNavF span { margin-left: -5000px; } #articleHead h2 { height: 29px; margin: 0 2px; padding: 7px 0 0 8px; color: #304e96; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; line-height: normal; } #articleNavB, #articleNavE, #articleNavF { position: absolute; top: 2px; right: 0; width: 102px; height: 29px; } #articleNavF { width: 143px; background: url(/templates/jsp/_style2/_achs/images/jamLink.gif); } #articleNavB .tocLink, #articleNavE .tocLink, #articleNavF .tocLink { display: block; width: 102px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/tocLink.gif); } #articleNavE .tocLink { background: url(/templates/jsp/_style2/_achs/images/asapLink.gif); } #articleNavF .tocLink { width: 143px; background: url(/templates/jsp/_style2/_achs/images/jamLink.gif); } #articleNavB .tocLink:hover, #articleNavE .tocLink:hover, #articleNavF .tocLink:hover { background-position: 0 -29px; } #articleMain { clear: both; float: left; width: 616px; margin: 0 0 0 10px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #specialIssueNotice { clear: both; display: block; padding: 7px; background: #eaeaea; } #authorBio { clear: both; margin: 5px 0; padding: 7px; background: #ffc; } #articleMain h1 { margin-bottom: 15px; font-size: 1.15em; color: #000; } #articleMain h2.deck { margin: 1em 0 15px; font: bold .95em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #333 !important; } #articleMain #links { float: right; width: 275px; margin: 0 0 15px 10px; background: url(/templates/jsp/_style2/_achs/images/gradient1.gif) repeat-x; text-align: left; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul { float: left; width: 120px; margin: 5px 0 0 5px; padding: 0; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul.wide { width: 140px; } #links ul li { clear: left; float: left; width: 100%; margin: 0 0 7px; padding: 0; font-size: .75em; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li a, #links ul li a:visited { float: left; color: #369; text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li a:hover { color: #fff; background: #369; cursor: pointer; } #links ul li span { margin: 0; padding: 2px 3px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li span.filesize { clear: none; padding: 0 2px 0 0; font-size: .75em; } #links ul li img { position: relative; top: 2px; margin: 0 3px 0 0; } #links ul li.onPage span { float: left; padding: 0 3px; border: 1px solid #81a2c1; background: #369; color: #fff; } #links ul li span.blurb { clear: left; display: block; margin-top: -4px; padding: 0 3px; font-size: .9em; } #articleMeta { margin-top: 15px; font-size: .8em; line-height: 1.3em; } #authors { font-size: 1em; font-weight: bold; color: #333; } #affiliation, #citation, #doi, #pubDate, #correspondence, #artCopyright { font-size: .9em; } #artCopyright { font-weight: bold; } #affiliation, #citation { margin: 10px 0 0; } #correspondence, #articleIcons { width: auto; margin: 7px 0 0; color: #666; } #articleIcons { float: left; margin: 7px 0; } #articleIcons div { float: left; height: 19px; margin-right: 10px; overflow: hidden; } #articleTools { clear: none; float: right; width: 160px; margin: 0 4px; background: #d1e6f6; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleTools h3 { display: block; margin: 20px 0 0; padding: 5px 2px 5px 10px; font: normal .8em Arial, Helvetica, sans-serif !important; color: #fff; background: #8495ba; } #articleTools h3.lesspad { margin: 0; } #articleTools ul { display: block; width: 159px; margin: 0; padding: 0; border-top: 1px solid #aebedc; border-right: 1px solid #a3b2d4; list-style: none; } #articleTools ul li { margin: 0; padding: 0; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .7em; } #articleTools ul.noBG li { border: 0; background: transparent; font-size: .7em; } #articleTools ul li img { margin: 0 5px 0 2px; } #articleTools li a, #articleTools li a:visited { display: block; border-left: 5px solid #a3b2d4; background: #d1e6f6; text-decoration: none; color: #369; } #articleTools li a:hover { border-left: 5px solid orange !important; background: #fff !important; } #articleTools div { margin: 0 0 5px 10px; padding: 0; font-size: .7em; } #permalink span { position: absolute; display: block; width: 300px; margin: 0 0 0 -142px; background: #eee; border: 1px solid #555; z-index: 9000; } #container #articleTools #permalink span a.hide, #container #articleTools #permalink span a.hide:hover { float: right; width: 15px; height: 15px; margin: 2px; border: 0 !important; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat !important; display: inline; /* EXPLORER SUCKS BIGTIME */ } #permalink input { margin: 5px; font-size: 11px; } #permalink span span { position: static; display: block; width: auto; margin: 5px 5px 0 5px; border: 0; } #articleTools #casSection { margin: 20px 0; border-bottom: 3px solid #a3b2d4; font-size: 1em; background: #fff; } #casSection li.first { border-top: 0; } #casSection #casSectionHead { width: 155px; margin: 0; padding: 0; border: 3px solid #a3b2d4; border-left: 5px solid #a3b2d4; border-right: 0; } ul#casExplore { background: url(/templates/jsp/_style2/_achs/images/casTools-bg.jpg); } #articleTools #casSection ul li a { display: block; padding-left: 5px; } ul#casExplore li a { background: transparent; } #articleTools #casSection ul li a:hover { background: #fff; } #articleTools #casSection ul li h4 { margin: 0 0 4px 5px; font-weight: normal; color: #369; } form#casToolAuthor, form#casToolTopic { position: relative; display: block; margin: 0; padding: 7px 0; border-left: 5px solid #a3b2d4; } #casSection form select, .exploreText { width: 145px; margin: 5px 0 0 5px; font-size: .9em; } #exploreText { width: 138px; } form#casToolTopic .submit, form#casToolAuthor .submit { position: absolute; top: 5px; right: 6px; } #articleTools ul.history li { padding: 3px 0 3px 10px; line-height: normal; background: #d1e6f6; } #articleTools ul.history li strong { display: block; font-weight: normal; } #articleTools ul.accession li a { display: block; padding-left: 5px; } #rightColumn ul#relatedArticles { display: block; margin: 0 0 25px; padding: 0; list-style: none; height: 1%; /* for IE */ } ul#relatedArticles a { display: block; height: 1%; /* for IE */ } ul#relatedArticles a:hover { text-decoration: none; } #rightColumn ul#relatedArticles li { position: relative; display: block; margin: 10px 4px 10px 7px; padding: 0; height: 1%; /* for IE */ } #rightColumn ul#relatedArticles li ul { position: absolute; left: -372px; top: -6em; width: 372px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/relatedBG.gif) no-repeat; font-size: .95em; z-index: 5000; display: none; } #rightColumn ul#relatedArticles li ul li { display: block; width: 330px; min-height: 180px; margin-top: 0; margin-bottom: 0; padding: 7px 7px 3em 7px; border: 2px solid #90b8df; border-right: 0; background: #ffffe4; } #rightColumn ul#relatedArticles li:hover, #rightColumn ul#relatedArticles li.over { background: #ffffe4; } #rightColumn ul#relatedArticles li:hover ul, #rightColumn ul#relatedArticles li.over ul { display: block; } #rightColumn ul#relatedArticles ul h3 { margin: 0 0 5px; font-size: 1em; line-height: normal; color: #000; } #rightColumn ul#relatedArticles ul div { margin: 0 0 5px; } #rightColumn ul#relatedArticles ul div.linkbar { position: absolute; bottom: 0; left: 0; width: 344px; margin: 0; padding: 5px 0; background: #ffc; color: #369; border-top: 1px solid #999; text-align: center; line-height: normal; } #rightColumn ul#relatedArticles div.linkbar a { display: inline; padding: 0 3px; color: #369; white-space: nowrap; } #rightColumn ul#relatedArticles div.linkbar a:hover { text-decoration: underline; } #rightColumn ul#relatedArticles ul p { margin: 5px 0; padding-top: 5px; line-height: normal; border-top: 1px solid #999; } #rightColumn ul#relatedArticles cite { font-size: 1em; color: #000; display: inline; } .contextualAds { min-height: 450px; } .contextualAds div { margin: 10px 7px; padding: 7px 0 0; border-top: 1px solid #ccc; } .contextualAds div.noBorder { border: 0; } #articleBody { clear: both; float: left; width: 610px; margin: 0; padding: 0 0 10px; font-size: .875em; } #articleBody h2 { clear: left; width: 430px; padding: 20px 0 3px; font: bold 1.1em "Trebuchet MS", Arial, Helvetica, sans-serif; } #articleBody hr { clear: right; display: block; height: 1px; margin: 2px 0 10px; background: #bbc5df; border: 0; } ul.anchors { position: relative; float: right; width: 164px; margin: 0; padding: 20px 0 0; z-index: 1; /* strange, but necessary */ } ul.anchors li { position: absolute; display: block; margin: 0; padding: 0; } ul.anchors a.anchorIMG { display: block; width: 164px; height: 20px; background: url(/templates/jsp/_style2/_achs/images/pulldown-anchors.gif) no-repeat; } ul.anchors li ul { position: absolute; display: block; width: 162px; margin: 0; padding: 0; border-left: 1px solid #666; border-right: 1px solid #666; list-style: none; background: #e9edf4; } ul.anchors li ul li { position: static; display: block; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #666; } ul.anchors li ul li a, .anchors ul li a:visited { display: block; width: 162px; padding: 4px 0; background: transparent; color: #021351; text-decoration: none; font-size: .8em; } ul.anchors li ul li a:hover { background: #fff; cursor: pointer; } ul.anchors li ul li a span { display: block; width: 156px; margin: 0 2px 0 4px; line-height: normal; } .overlay { position: absolute; left: 0; bottom: 0; width: 21px; height: 21px; background: url('/templates/jsp/_style2/_achs/images/enlarge-overlay.gif'); filter: alpha(opacity=85); -moz-opacity: 0.85; -khtml-opacity: 0.85; opacity: 0.85; cursor: pointer; } #abstractBox, #supInfoBox { float: left; width: 608px; margin: 5px 0; border: 1px solid #bbc5df; background: #f4f9fd; } #abstractBox { padding-top: 7px; } #absImg { position: relative; float: right; margin: 7px; padding: 5px; border: 1px solid #ccc; background: #fff; } #articleBody #abstractBox p { margin-left: 7px; margin-right: 7px; } #supInfoBox h3 { margin: 7px 0 0 7px; font-size: 1em; color: #000; } #supInfoBox ul { margin: 0 0 20px; padding: 0 0 0 25px; } #supInfoBox ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #supInfoBox ul li img { margin: 0 5px 0 0; } #supInfoBox p { font-size: .875em; margin: 10px 7px 7px 7px; } .figure { float: left; width: 100%; margin: 10px 0 15px; border-top: 1px solid #666; border-bottom: 1px solid #666; background: #eee; } a.thumbnail { position: relative; float: left; margin: 7px 15px 7px 7px; padding: 5px; border: 1px solid #ccc; background: #fff; } .figure .caption { margin: 7px; font: .9em Arial, Helvetica, sans-serif; } #articleMain ol { margin: 0 0 0 35px; padding: 0; } #articleMain ol li { margin: 0 0 10px; word-wrap: break-word; } #citedBy { float: left; display: block; margin: 0; padding: 0; font-size: .9em; } #citedBy a { display: block; height: 1%; /* for IE */ } /* Atypon - contributor links must be inline */ #citedBy .contributors a { display: inline; height: auto; } #citedBy a:hover { text-decoration: none; } #citedBy li { position: relative; clear: left; float: left; display: block; width: 585px; margin: 5px 0; padding: 7px; z-index: 5000; /* for IE */ } #citedBy li.blue { background: #f0f9fd; } #citedBy .cover { float: left; width: 90px; margin: 0 7px 0 0; border: 1px solid #ccc; } #articleBody #citedBy h2 { clear: none; margin: 0; padding: 0; font-size: 1em; width: auto; } #citedBy h2 a { text-decoration: none; } #citedBy h2 a:hover { text-decoration: underline; } #citedBy li ul { position: absolute; right: -365px; top: -10em; width: 373px; margin: 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/citedBG.gif) no-repeat; font-size: .875em; z-index: 8000; display: none; } #citedBy li ul li { float: right; width: 330px; min-height: 180px; margin-top: 0; margin-bottom: 0; padding: 7px 7px 3em 7px; border: 2px solid #90b8df; border-left: 0; background: #ffffe4; } #citedBy li:hover, #citedBy li.over { background: #ffffe4; } #citedBy li:hover ul, #citedBy li.over ul { display: block; } #citedBy ul h3 { margin: 0 0 5px; font-size: 1em; line-height: normal; color: #000 !important; } #citedBy ul div { margin: 0 0 5px; } #citedBy div.linkbar { position: absolute; bottom: 0; left: 0; width: 344px; margin: 0; padding: 5px 0; background: #ffc; color: #369; border-top: 1px solid #999; text-align: center; line-height: normal; } #citedBy div.linkbar a { display: inline; padding: 0 3px; color: #369; white-space: nowrap; text-decoration: none; } #citedBy div.linkbar a:hover { text-decoration: underline; } #citedBy ul p { margin: 5px 0; padding-top: 5px; line-height: normal; border-top: 1px solid #999; } #citedBy cite { font-size: 1em; color: #000; } sup a.ref { padding: 3px; font-size: 1.1em; } a.ref:hover { background: #369; color: #fff; text-decoration: none; } span.ref .balloon a { font-size: 1em; text-decoration: underline; } span.ref .balloon a:hover { text-decoration: none; background: transparent; color: #369; } .balloon-wrap { position: absolute; margin: -10px 0 0 2px; padding: 0 0 0 18px; background: transparent url(/templates/jsp/_style2/_achs/images/balloon-notch.gif) no-repeat; z-index: 8000; display: none; } .balloon { float: left; width: 360px; padding: 0 7px 7px 7px; border: 2px solid #90b8df; border-left: 0; background: #ffffe4; line-height: normal; font-size: 12px; color: #444; text-decoration: none; } .balloon a.close { float: right; width: 15px; height: 15px; margin: 7px 0 5px 7px; padding: 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat; } span.ref .balloon a { padding: 0; } span.ref .balloon a.close:hover { background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat; } .balloon span { display: block; margin: 10px 0 0; } .balloon span span { display: inline;} span.ref .balloon .refLink { float: right; margin: 7px 0 0; } .citationLinks { display: inline; margin-left: .1em; } body.article .rtColBox, body.newsStory .rtColBox { padding: 0 0 7px; } body.article .rtColBox div, body.newsStory .rtColBox div, body.article .rtColBox p, body.newsStory .rtColBox p { margin: 0 7px; } body.article .rtColBox h2, body.newsStory .rtColBox h2 { margin: 2px 2px 10px 2px; padding: 4px 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } body.article #container .rtColBox h3 { margin-left: 7px; font: bold 1em 'Trebuchet MS', Arial, Helvetica, sans-serif; color: #000; } body.article #rightColumn ul { margin: 0 5px 25px 7px; list-style: none; } body.article #rightColumn ul li { margin: 10px 0; list-style-image: none; } body.article #rightColumn ul.oneline { margin-top: 7px; } body.article #rightColumn ul.oneline li { margin: 2px 0; } body.article ul li cite { display: block; margin: 0; padding: 0; color: #444; font-size: .9em; height: 1%; } /* === VARIATIONS OF ABSTRACT PAGE === */ .archiveNote { clear: both; width: 100%; margin-top: 15px; padding: 7px 0; border-top: 1px solid #600; border-bottom: 1px solid #600; background: #ffc; } .archiveNote p { margin: 0 10px; font-size: .8em; line-height: normal; } #firstPage img { width: 99%; margin: 7px 0; border: 1px solid #ccc; } .access { clear: both; float: left; width: 608px; margin: 10px 0 20px; padding: 0; border: 1px solid #999; background: #ffffe4; line-height: normal; } .access div div { margin: 0 0 0 7px; font-size: .75em; } .access h4 { margin: 0 0 0 7px; padding: 0; font-size: .8em; font-weight: bold; color: #500; } .access .head { height: 20px; padding: 3px 0; background: #ffc; border-bottom: 1px solid #ccc; color: #500; line-height: 20px; } .head img { float: left; margin: 0 7px; } .access .explanation { float: left; width: 300px; margin: 7px 7px 0 0; padding: 0; } .access ul { margin: 3px 0 10px; padding: 0 0 0 25px; font-size: .75em; } .access ul li { margin-bottom: 3px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .access .signIn, .access .purchase { float: right; width: 292px; margin: 0 0 0 7px; padding: 7px 0 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; display: inline; /* EXPLORER SUCKS BIGTIME */ } .access .signIn { border-bottom: 0; } .signIn form { margin: 0; padding: 0; } .signIn .row { margin-left: 0; } .signIn label { clear: none; float: left; width: 133px; margin: 10px 0 0 7px; font-weight: bold; } .signIn input { width: 125px; margin: 0 0 0 7px; padding: 0; } .signIn .error { float: left; margin: 7px 7px 0; color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } .signIn #submit { width: auto; margin: 10px 15px 0 7px; } .searchTip { clear: both; float: left; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #400; background: #ffc; line-height: normal; display: inline; /* EXPLORER SUCKS BIGTIME */ } .searchTip img { float: left; margin: 7px; } .searchTip div { font-size: .75em; margin: 7px 7px 7px 0; } .searchTip div a { white-space: nowrap; } /* === START OF FIGURE VIEWER STYLES === */ #figureViewer-wrap { position: absolute; left: 0; width: 899px; margin: 0 50px; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/figureViewer-bg1.gif) no-repeat; z-index: 9000; } #figureViewer { margin: 0; width: 899px; margin: 15px 0 0; background: #e3e1e2 url(/templates/jsp/_style2/_achs/images/figureViewer-bg2.gif) repeat-y; } #figureViewerNav { position: relative; width: 899px; height: 2em; line-height: 20px; margin: 0; } #figureViewerNav .figureNav { position: absolute; width: 280px; left: 310px; } #figureViewerNav a.prev { top: 0; left: 0; } #figureViewerNav a.next { top: 0; right: 0; } #figureViewerNav .figureNav span { font-size: .75em; vertical-align: bottom; } #figureViewerNav a.close { position: absolute; top: -5px; right: 16px; width: 100px; min-height: 15px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat top right; font: .7em Arial, Helvetica, sans-serif; text-align: right; text-decoration: none; } #figureViewerNav a.close:hover { text-decoration: underline; } #figureCanvas { position: relative; width: 870px; min-height: 200px; margin: 0 0 0 12px; border: 1px solid #666; background: #fff; text-align: center; } #figureCanvas .figBox { float: none; display: block; width: 800px; margin: 0 auto 15px; padding: 10px 0 0; border: 0; background: #fff; } .figBox img { display: block; border: 1px solid #ccc; margin: 7px auto; padding: 7px; max-width: 500px; } #figureCanvas #figTools { position: absolute; top: 10px; left: 3px; text-align: left; } #figTools div { height: 19px; margin: 0 0 5px; overflow: hidden; } #figTools div.weo { width: 105px; } #figTools div.highRes { width: 115px; } #figTools div.ppt { width: 168px; } #figTools div a { display: block; height: 19px; } #figTools div.weo a { background: url(/templates/jsp/_style2/_achs/images/icon-weo.gif) no-repeat; } #figTools div.highRes a { background: url(/templates/jsp/_style2/_achs/images/icon-highres.gif) no-repeat; } #figTools div.ppt a { background: url(/templates/jsp/_style2/_achs/images/icon-ppt.gif) no-repeat; } #figTools div a:hover { background-position: 0px -19px; } #figTools div a span { display: none; } #figureCanvas .caption { margin: 7px 7px 0 7px; padding: 10px 0; border-top: 1px solid #ccc; font: .8em 'Trebuchet MS', Arial, Helvetica, sans-serif; } #figureViewer-footer { display: block; width: 899px; height: 15px; } /* === END OF FIGURE VIEWER STYLES === */ /* === Cited By Page === */ #fullCitList h2 { margin: 0 !important; padding: 0 !important; } /* === AUTHOR INDEX === */ #aiContent { width: 796px; margin: 0 0 0 5px; padding: 0; border: 1px solid #b6b6e1; background: #fff; } #aiContent h3 { margin: 5px 0 10px 7px; } #aiVolJump { display: block; margin: 20px 0 15px; font-size: .875em; } #aiVolJump strong { margin-left: 7px; font-size: .875em; } div.subLinks a { margin: 0 0 0 7px; font-size: .8em; } #aiContent .articles { padding: 10px 0 0; border: 0; } #container #aiContent .articleBox h2 { font-size: 1.1em; background: transparent !important; } #mainBody #aiContent .articleBox h3 { margin: 0; padding: 0; font-size: 1.1em; color: #333; } #aiContent .articleBox { font-size: .875em; } #aiContent .articleBox div { margin-left: 5px; } #aiContent .articleBox div div { margin-left: 0; } #aiContent .noFigFooter { clear: both; } div.alphaSelect { display: block; width: 782px; height: 24px; margin: 0 auto 7px auto; background: url(/templates/jsp/_style2/_achs/images/alphabet.gif); } div.alphaSelect a { float: left; width: 30px; height: 24px; background: url(/templates/jsp/_style2/_achs/images/alphabet.gif); } div.alphaSelect a:hover { cursor: pointer; } div.alphaSelect a span { display: block; width: 30px; height: 24px; background: transparent; } div.alphaSelect a.a { background-position: 0 0; } div.alphaSelect a.a:hover { background-position: 0 -48px; } div.alphaSelect a.a span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) 0 -24px; } div.alphaSelect a.b { background-position: -30px 0; } div.alphaSelect a.b:hover { background-position: -30px -48px; } div.alphaSelect a.b span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -30px -24px; } div.alphaSelect a.c { background-position: -60px 0; } div.alphaSelect a.c:hover { background-position: -60px -48px; } div.alphaSelect a.c span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -60px -24px; } div.alphaSelect a.d { background-position: -90px 0; } div.alphaSelect a.d:hover { background-position: -90px -48px; } div.alphaSelect a.d span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -90px -24px; } div.alphaSelect a.e { background-position: -120px 0; } div.alphaSelect a.e:hover { background-position: -120px -48px; } div.alphaSelect a.e span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -120px -24px; } div.alphaSelect a.f { background-position: -150px 0; } div.alphaSelect a.f:hover { background-position: -150px -48px; } div.alphaSelect a.f span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -150px -24px; } div.alphaSelect a.g { background-position: -180px 0; } div.alphaSelect a.g:hover { background-position: -180px -48px; } div.alphaSelect a.g span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -180px -24px; } div.alphaSelect a.h { background-position: -210px 0; } div.alphaSelect a.h:hover { background-position: -210px -48px; } div.alphaSelect a.h span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -210px -24px; } div.alphaSelect a.i { background-position: -240px 0; } div.alphaSelect a.i:hover { background-position: -240px -48px; } div.alphaSelect a.i span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -240px -24px; } div.alphaSelect a.j { background-position: -270px 0; } div.alphaSelect a.j:hover { background-position: -270px -48px; } div.alphaSelect a.j span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -270px -24px; } div.alphaSelect a.k { background-position: -300px 0; } div.alphaSelect a.k:hover { background-position: -300px -48px; } div.alphaSelect a.k span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -300px -24px; } div.alphaSelect a.l { background-position: -330px 0; } div.alphaSelect a.l:hover { background-position: -330px -48px; } div.alphaSelect a.l span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -330px -24px; } div.alphaSelect a.m { background-position: -360px 0; } div.alphaSelect a.m:hover { background-position: -360px -48px; } div.alphaSelect a.m span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -360px -24px; } div.alphaSelect a.n { background-position: -390px 0; } div.alphaSelect a.n:hover { background-position: -390px -48px; } div.alphaSelect a.n span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -390px -24px; } div.alphaSelect a.o { background-position: -420px 0; } div.alphaSelect a.o:hover { background-position: -420px -48px; } div.alphaSelect a.o span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -420px -24px; } div.alphaSelect a.p { background-position: -450px 0; } div.alphaSelect a.p:hover { background-position: -450px -48px; } div.alphaSelect a.p span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -450px -24px; } div.alphaSelect a.q { background-position: -480px 0; } div.alphaSelect a.q:hover { background-position: -480px -48px; } div.alphaSelect a.q span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -480px -24px; } div.alphaSelect a.r { background-position: -510px 0; } div.alphaSelect a.r:hover { background-position: -510px -48px; } div.alphaSelect a.r span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -510px -24px; } div.alphaSelect a.s { background-position: -540px 0; } div.alphaSelect a.s:hover { background-position: -540px -48px; } div.alphaSelect a.s span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -540px -24px; } div.alphaSelect a.t { background-position: -570px 0; } div.alphaSelect a.t:hover { background-position: -570px -48px; } div.alphaSelect a.t span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -570px -24px; } div.alphaSelect a.u { background-position: -600px 0; } div.alphaSelect a.u:hover { background-position: -600px -48px; } div.alphaSelect a.u span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -600px -24px; } div.alphaSelect a.v { background-position: -630px 0; } div.alphaSelect a.v:hover { background-position: -630px -48px; } div.alphaSelect a.v span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -630px -24px; } div.alphaSelect a.w { background-position: -660px 0; } div.alphaSelect a.w:hover { background-position: -660px -48px; } div.alphaSelect a.w span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -660px -24px; } div.alphaSelect a.x { background-position: -690px 0; } div.alphaSelect a.x:hover { background-position: -690px -48px; } div.alphaSelect a.x span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -690px -24px; } div.alphaSelect a.y { background-position: -720px 0; } div.alphaSelect a.y:hover { background-position: -720px -48px; } div.alphaSelect a.y span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -720px -24px; } div.alphaSelect a.z { background-position: -750px 0; } div.alphaSelect a.z:hover { background-position: -750px -48px; } div.alphaSelect a.z span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -750px -24px; } /* === START OF SEARCH PAGE STYLES === */ body.search #content-wrap { width: 1000px; } body.search #content { width: 995px; } body.search #contentMain { width: 995px; } body.search h2 { margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } #criteria { float: left; width: 323px; margin: 0; border: 1px solid #d8e5ee; background: #d8e5ee; } .searchInterface { /* atypon change - rename */ float: left; width: 323px; padding: 0 0 15px; background: #fff; font-size: .75em; display: inline; /* EXPLORER SUCKS BIGTIME */ } .searchInterface h4 {/* atypon change - rename */ margin: 15px 7px 0 7px; font-size: 1.1em; color: #333; } .searchInterface h5 {/* atypon change - rename */ width: 307px; margin: 20px 0 4px; font-size: 1.1em; color: #444; border-bottom: 1px solid #ccc; } .searchInterface a {/* atypon change - rename */ text-decoration: none; } .searchInterface a:hover {/* atypon change - rename */ text-decoration: underline; } .searchInterface hr {/* atypon change - rename */ clear: both; display: block; height: 1px; margin: 7px 0 10px; background: #bbc5df; border: 0; } .searchInterface div, .searchInterface span {/* atypon change - rename */ margin: 0 7px; line-height: normal; } .searchInterface .filters a {/* atypon change - rename */ font-size: .9em; } .searchInterface span, .searchTip span {/* atypon change - rename */ margin: 0; color: #500; } .searchInterface p {/* atypon change - rename */ margin: 15px 7px 15px 7px; line-height: normal; } .searchInterface ul {/* atypon change - rename */ margin: 0 7px 15px 7px; padding: 0; list-style: none; } .searchInterface ul li {/* atypon change - rename */ margin: 0 0 2px; line-height: normal; } .searchInterface ul.filters {/* atypon change - rename */ margin-bottom: 7px; } .searchInterface ul.filters li {/* atypon change - rename */ color: #500; } .searchInterface ul.filters strong {/* atypon change - rename */ color: #000; font-weight: normal; } #advSearch { float: left; margin: 15px 0 20px 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #advSearch div { margin: 10px 0 0 2px; } #advSearch .full { width: 303px; } #stemOption label { margin: 0 7px 0 0; } #advSearch #journalFilter, #advSearch #journalFilter2, #advSearch #dateFilter { margin-top: 0; } #journalFilter p { margin: 0; padding: 3px 0 0; } #journalFilter ul { width: 303px; margin: 10px 0 0; padding: 0; } #journalFilter ul li { width: 288px; margin: 0 0 2px 14px; padding: 0; color: #666; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .searchInterface div.button { float: right; margin: 5px 7px 5px 0 !important; } #jFilterInterface { position: absolute; top: 330px; left: 255px; float: left; width: 560px; padding: 10px 0; border: 1px solid #333; background: #e0e8f1; z-index: 6000; } #jFilterInterface a.close { float: right; width: auto; height: 15px; margin: 0 7px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat right top; text-decoration: none; } #jFilterInterface a.close:hover { text-decoration: underline; } #jFilterInterface h4 { margin: 0 0 0 10px; } #jFilterInterface p { margin: 0 0 7px 10px; font-size: .875em; } #jFilterInterface div.buttons { float: none; display: block; width: 100%; margin: 0 0 10px; } #jFilterInterface #save { margin: 0 20px 0 10px; } #jFilterInterface div.buttons a, #jFilterInterface div.buttons a:visited { color: #369; } #jFilterInterface div { float: left; width: 265px; margin: 0 0 0 7px; } #jFilterInterface label { display: block; } #advSearch label { font-size: .95em; } #jlist { width: 305px; } #dateFilter { float: right; } #dateFilter div { clear: right; margin: 0 0 7px; } #dateFilter input { margin-right: 0; } #dateFilter label { margin: 0 10px 0 0; } #dateFilter select { float: right; width: 100px; margin: 0 7px 7px 3px; } #dateFilter span { float: right; margin: 2px 7px 7px 0; color: #000; } #advSearchSub { float: right; } #advSearchSub span { position: relative; top: -5px; margin-right: 15px; } #advSearchSub input { margin: 0 7px 0 0; } #saveSearchBox { position: relative; clear: both; height: 1%; /* for IE */ margin-top: 20px; padding: 7px 7px 27px 7px; background: #eef6fc; border: 1px solid #b2beda; } #saveSearchBox #saveSearchA { margin: -5px 0 5px 0; } #saveSearchBox #saveSearchB { margin: 0; } #saveSearchBox a.close { position: absolute; top: 2px; right: 2px; display: block; width: 100px; min-height: 15px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat top right; font: .9em Arial, Helvetica, sans-serif; text-align: right; text-decoration: none; } #saveSearchBox h3 { margin: 0 0 7px 0; font-size: 1.2em; color: #304e96; } .searchInterface #saveSearchBox div {/* atypon change - rename */ margin: 0; } #saveSearchBox #saveSearchB div { margin: 5px 0 10px 0; } #saveSearchBox #searchName { margin: 6px 5px 0 0; font-size: .9em; } #saveSearchBox #saveSearchB select { margin: 4px 0 10px 0; } #saveit { position: relative; top: 5px; } #finalize { position: absolute; right: 5px; bottom: 7px; } #saveSearchBox #viewSaved { position: absolute; text-align: right; bottom: 2px; right: 7px; } body.search .findCitation { clear: left; padding: 7px 0 1px 0; background: #6982ba; } body.search .findCitation h3 { margin: 0 0 0 14px; padding: 0; background: transparent; } body.search .findCitation select { display: block; width: auto; margin: 7px 0 0 0; } body.search #citationJump div { margin: 0 14px 7px 14px; } body.search #citationJump #citJmpVol { margin-top: 7px; } .searchInterface .fuzzyName {/* atypon change - rename */ text-align: right; } .searchInterface .fuzzyName div {/* atypon change - rename */ margin: 0 7px 0 0; } #results, #guide { position: relative; clear: none; float: right; width: 655px; margin: 0 5px 0 0; border: 1px solid #d8e5ee; background: #fff; display: inline; /* EXPLORER SUCKS BIGTIME */ } #results h2.heading, #guide h2.heading { float: left; margin: 0 0 10px 0; background: transparent; } #resultsHead, #guideHead { position: relative; width: 652px; height: 29px; margin: 3px 0 0 3px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; } #guideHead { width: 650px; } #relevanceBox { float: right; height: 29px; margin: 1px 0 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/relevanceBox.gif) no-repeat right top; font-size: .7em; } #relevanceBox span { float: left; margin: 4px 7px 0 3px; } #relBoxLeft { float: left; width: 7px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/relevanceBoxLeft.gif) no-repeat; } #relevanceBox select { float: left; height: 17px; margin: 4px 10px 0 0; } #relevanceBox select { font-size: 1em; } .resultInfo { clear: both; float: left; width: 100%; margin: 15px 0 10px; text-align: center; } .showing { float: left; margin: 1px 0 0 13px; font-size: .75em; } .perPage { float: right; margin: 1px 7px 0 0; font-size: .75em; } .resultsNav { clear: both; } .resultsNav span { font-size: .75em; } .resultsNav a { margin: 0; padding: 0 4px; border: 1px solid #fff; font-size: .75em; text-decoration: none; } .resultsNav a:hover { border-color: #369; } body.search #textArea { width: 100%; border: 0; } body.search #textArea h3 { font-size: 1.2em; color: #369; } body.search #articleArea { width: 100%; border: 0; font-size: .875em; } body.search .articleListHeader, body.search .articleListFooter { clear: both; width: 616px; margin: 0 0 10px 11px; } .articleBox .snippet { clear: both; float: left; margin: 7px 0 0; color: #666; line-height: normal; } .articleBox .snippet, .articleBox .snippet * { font-size: 11px !important; } .articleBox .snippet p { margin: 0 0 7px !important; } ul.tabs { clear: both; float: left; height: 25px; width: 645px; margin: 7px 0 0 0; padding: 0 0 0 10px; background: url(/templates/jsp/_style2/_achs/images/tabs-bglayer.gif) repeat-x; display: inline; /* EXPLORER SUCKS BIGTIME */ } #criteria ul.tabs { width: 313px; } ul.tabs li { float: left; width: auto; height: 25px; margin: 0 0 0 2px; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } ul.tabs li a { float: left; width: auto; height: 25px; background: transparent url(/templates/jsp/_style2/_achs/images/tabLeft.gif); text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } ul.tabs li a span { float: left; height: 21px; margin: 0; padding: 4px 7px 0 7px; font-size: .75em; background: transparent url(/templates/jsp/_style2/_achs/images/tabRight.gif) no-repeat top right; display: inline; /* EXPLORER SUCKS BIGTIME */ } #criteria ul.tabs li a span { background: transparent url(/templates/jsp/_style2/_achs/images/tabRight-blue.gif) no-repeat top right; } ul.tabs li.nowShowing a { background-position: 0 -50px; } ul.tabs li.nowShowing a span, #criteria ul.tabs li.nowShowing a span { background-position: right -50px; } ul.tabs li a:hover { background-position: 0 -25px; cursor: pointer; } ul.tabs li a:hover span, #criteria ul.tabs li a:hover span { background-position: right -25px; } .genPageBox { clear: both; margin: 0 10px 15px; padding: 0 0 7px 10px; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; font-size: .875em; } .genPageBox h2 { margin: 5px 0 0 10px !important; padding: 0 !important; background: transparent !important; } .genPageBox h2 a { color: #35659a; text-decoration: none; } .genPageBox h3 { margin: 0 0 0 10px !important; font-style: italic !important; font-weight: normal !important; font-size: 1em !important; color: #000 !important; } .genPageBox h2 a:hover { text-decoration: underline; } .genPageBox div { margin: 5px 0 0 10px; } .genPageBox div span { font-style: italic; } .genPageBox .snippet { float: none; } #searchTipsLink { float: right; margin: 5px 8px 0 0; font-size: .7em; } #searchTipsLayer { position: absolute; right: 0; top: 0; width: 635px; height: 100%; padding: 7px 10px; background: #d8e3ed; z-index: 5000; } #searchTipsLayer h1 { font-size: 1.2em; margin-bottom: 1em; } #searchTipsLayer h1, #searchTipsLayer h3 { color: #000; } #searchTipsLayer p, #searchTipsLayer li { font-size: .8em; } #searchTipsLayer .button { float: right; width: 10em; margin: 5px 0 15px; text-align: center; font-size: .8em; } #searchTipsLayer h1 { clear: left; } /* === END OF SEARCH PAGE STYLES === */ /* === START OF ISSUE LIST STYLES === */ #issueList { margin: 15px 0 0; } ul.preIssue, ul.volumes { display: block; list-style: none; margin: 0 0 20px; padding: 0 !important; } ul.preIssue a, ul.preIssue a:visited { font-size: .9em; text-decoration: none; color: #369; } ul.volumes { margin: 10px 0 0; } ul.volumes ul { display: block; margin: 5px 0 0; padding: 0 0 10px 30px; } ul.volumes ul li { font-size: .9em; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } ul.volumes ul li img { vertical-align: middle; padding-bottom: 2px; } ul.volumes a, ul.volumes a:visited { text-decoration: none; font-weight: bold; color: #369; } #issueList a:hover { color: #500; } ul.volumes ul a, ul.volumes ul a:visited { font-weight: normal; } ul.volumes .plusMinus { float: left; width: 13px; height: 13px; margin: 2px 5px 0 0; background: url(/templates/jsp/_style2/_achs/images/plusMinus.gif) no-repeat; overflow: hidden; } ul.volumes .minus { background-position: 0 -13px; } ul.volumes .special { font-size: .9em; color: #555; } /* === END OF ISSUE LIST STYLES === */ /* === START OF COVER ART GALLERY STYLES === */ #volumeNav { position: absolute; top: 2px; right: 0; width: 220px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/volumeNav.gif) no-repeat 0 -58px; } #volumeNav a { position: absolute; display: block; height: 29px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/volumeNav.gif) no-repeat; } #volumeNav .previous { left: 0; width: 115px; background-position: 0 0; } #volumeNav .next { left: 115px; width: 96px; background-position: -115px 0; } #volumeNav .previous:hover { background-position: 0 -29px; } #volumeNav .next:hover { background-position: -115px -29px; } #volumeNav a span { margin-left: -5000px; } ul#coverVol { position: relative; width: 164px; margin: 10px 0 30px 21px; padding: 0 0 12px; z-index: 1; /* strange, but necessary */ } ul#coverVol li { position: absolute; display: block; margin: 0; padding: 0; } ul#coverVol a.volIMG { display: block; width: 164px; height: 20px; background: url(/templates/jsp/_style2/_achs/images/pulldown-volume.gif) no-repeat; } ul#coverVol li ul { position: absolute; display: block; width: 162px; margin: 0; padding: 0; border-left: 1px solid #dacfbd; border-right: 1px solid #dacfbd; list-style: none; background: #e9edf4; } ul#coverVol li ul li { position: static; display: block; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #dacfbd; } ul#coverVol li ul li a, ul#coverVol li ul li a:visited { display: block; width: 162px; background: transparent; color: #021351; text-decoration: none; font-size: .8em; } ul#coverVol li ul li a:hover { background: #fff; cursor: pointer; } ul#coverVol li ul li a span { display: block; width: 156px; margin: 0 2px 0 4px; } #coverArea .footer { clear: both; } .coverNav { margin: 0 0 15px; text-align: center; } .coverNav .showing { float: none; margin: 0 10px 0 0; font-size: .9em; } .coverNav * { font-size: .9em; } .coverNav a { margin: 0 7px; } body.coverArt h4, body.coverArt h5 { margin: 0; padding: 0; font: .8em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #444; } .coverArtBox { clear: none; float: left; width: 159px; margin: 0 0 30px; text-align: center; white-space: nowrap; height: 270px; /* Atypon: floats do not work correctly without height set */ display: inline; /* EXPLORER SUCKS BIGTIME */ } .coverArtBox div { font-size: .8em; } .coverArtBox img { margin: 5px 0; border: 1px solid #666; } .theCover { float: right; margin: 0 10px 0 10px; } .theCover img { border: 1px solid #ccc; } .coverDescription h2 { padding-top: 0 !important; background: transparent !important; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; color: #333; } .coverDescription h3 { margin-bottom: 3px; color: #000 !important; } .coverDescription ul { margin: 0; padding: 0 0 0 25px !important; } .coverDescription li { font-size: .9em; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .largeCoverCaption { margin: 0 10px; font-size: .875em; line-height: 1.6em; } #textArea .largeCoverCaption p { font-size: 1em; margin-left: 0; } /* === END OF COVER ART GALLERY STYLES === */ /* === START OF ONLINE NEWS STYLES === */ body.newsStory #articleBody { margin: 20px 0 15px; } body.newsIndex #textArea { float: left; padding-bottom: 10px; } #onlineNewsNav { position: absolute; top: 2px; right: 0; width: 220px; height: 29px; } #onlineNewsNav a { position: absolute; height: 29px; background: url(/templates/jsp/_style2/_achs/images/onlineNewsNav.gif); } #onlineNewsNav .newsLatest { left: 0; width: 80px; background-position: 0 0; } #onlineNewsNav .newsArchive { left: 80px; width: 55px; background-position: -80px 0; } #onlineNewsNav .newsRSS { left: 135px; width: 85px; background-position: -135px 0; } #onlineNewsNav .newsLatest:hover { background-position: 0 -29px; } #onlineNewsNav .newsArchive:hover { background-position: -80px -29px; } #onlineNewsNav .newsRSS:hover { background-position: -135px -29px; } #onlineNewsNav span { margin-left: -5000px; } body.newsIndex #sideCol { width: 210px; margin-right: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #newsIndexContent { float: left; width: 563px; margin: 0 0 0 7px; border: 1px solid #b6b6e1; display: inline; /* EXPLORER SUCKS BIGTIME */ } #featuredItem { margin: 0 0 15px; padding: 7px; background: #f2fced; } #newsIndexContent h4 { margin: 0; padding: 0; font-size: .75em; font-weight: normal; } #newsIndexContent h3 { margin: 0 0 5px; padding: 0; font-size: .95em; } #newsIndexContent h2 { margin: 0 0 7px; padding: 0; } #newsIndexContent p { margin: 0; padding: 0; font-size: .8em; line-height: normal; } #featuredItem p { text-align: justify; } img#featuredImage { float: right; margin: 0 0 0 15px; } #mostRecentItems { clear: both; float: left; width: 347px; margin: 0 0 0 7px; padding-bottom: 10px; } #mostRecentItems .newsItem { float: left; width: 100%; margin: 0 0 25px; } img.newsImage { float: left; margin: 0 7px 0 0; } #archiveList { float: right; width: 180px; margin: 0 7px 0 0; padding-left: 7px; border-left: 1px solid #a3cdb7; } #archiveList ul { margin: 0 0 15px; padding: 0; } #archiveList ul li { margin: 0 0 5px 15px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: .8em; } #archiveList ul li a { text-decoration: none; } #archiveList ul li a:hover { text-decoration: underline; } #textArea #sideCol p { font-size: 1em; margin: 0 0 7px; } body.newsIndex #sideCol .sideColBox ul li { margin-bottom: 7px; } body.newsIndex #sideCol .sideColBox ul li a { text-decoration: none; } body.newsIndex #sideCol .sideColBox ul li a:hover { text-decoration: underline; } body.newsIndex h1 { margin-bottom: 3px; font-size: 1em; } #browseMonth { float: left; margin: 5px 0 30px 10px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #browseMonth a { float: left; margin: 0 5px 0 0; padding: 0 2px; border: 1px solid #369; background: #d8e5ee; font-size: .7em; line-height: 1.4em; text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #browseMonth a:hover { background: #369; color: #fff; } #archiveItems .newsItem { clear: both; float: left; width: 773px; margin: 0 10px 15px; padding: 0 0 7px; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; font-size: .875em; } #archiveItems .newsItem .newsImage { float: left; margin: 7px 7px 0 10px; border: 1px solid #ccc; } #archiveItems .newsItem h4 { margin: 7px 0 0 0 10px; font-size: .875em; } #archiveItems .newsItem h2 { margin: 0 0 0 10px; padding: 0; font-size: 1.1em; } #archiveItems .newsItem h2 a { color: #35659a; text-decoration: none; } #archiveItems .newsItem h2 a:hover { text-decoration: underline; } #archiveItems .newsItem p { font-size: .9em; margin: 3px 10px 0; line-height: normal; } #articleContent #articleBody h2.newsRelatedHead { display: block; width: auto; margin-top: 30px; background: #666; color: #fff; padding: 2px 0 2px 7px; } ul.newsRelated { margin: 7px 0 0; padding: 0; } ul.newsRelated li { margin: 0 0 7px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1.1em; } /* === END OF ONLINE NEWS STYLES === */ /* === START OF RSS ALERT PAGE STYLES === */ #feedList { float: left; } div.listCol { float: left; } #content ul.rssList { margin: 5px 20px 30px 10px; padding: 0; list-style: none; } #content ul.rssList li { margin: 0 0 5px; padding: 0; } ul.rssList li a { display: block; margin: 0 0 10px; padding: 0 0 0 20px; text-decoration: none; font-size: .875em; background: url(/templates/jsp/_style2/_achs/images/rss.png) no-repeat; } ul.rssList li a:hover { text-decoration: underline; } #aboutRSS { float: right; width: 220px; margin: 0 5px 0 0; background: #eee; font-size: .9em; } #aboutRSS ul { border: 0; padding: 0; } #aboutRSS ul li { margin: 0 0 3px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #aboutRSS h2 { margin: 0; padding: 7px 10px; background: #369; color: #fff; } #aboutRSS h3 { color: #000; } /* === END OF RSS ALERT PAGE STYLES === */ /* === START OF CITATION DOWNLOAD STYLES === */ #downloadCitation { margin: -10px 0 0 10px; } #downloadCitation h2 { font-size: .9em !important; color: #000 !important; } #downloadCitation label { display: block; margin: 0 0 0 30px; font-size: .875em; } #downloadCitation select { margin: 0 0 0 30px; } label#quickImport { margin: 20px 0 0 10px; } #downloadCitation #submit { margin: 15px 0 15px 10px; } #downloadCitList li { margin-bottom: 7px; font: .875em Arial, Helvetica, sans-serif; } #downloadCitList h4 { margin: 0 !important; padding: 0 !important; font: bold 1em Arial, Helvetica, sans-serif !important; } /* === END OF CITATION DOWNLOAD STYLES === */ /* === START OF EMAIL A COLLEAGUE STYLES === */ #emailLink p { margin: 0 0 5px 10px; } #emailLink h5 { margin: 0 0 30px 40px; } #emailLink div { clear: left; margin: 0 0 10px 20px; font-size: .875em; } #emailLink div span { float: left; width: 10em; margin: 0 10px 0 0; text-align: right; } #emailLink label { display: block; margin: 15px 0 0 30px; } #emailLink label * { float: none !important; vertical-align: middle; } #emailLink #submit { margin: 0 0 30px 30px; } /* === END OF EMAIL A COLLEAGUE STYLES === */ /* === START OF ARRC/LRC STYLES === */ #arrcLogo, #lrcLogo { margin: 15px 0 15px 15px; } body.arrc #content-wrap, body.lrc #content-wrap { width: 685px; } body.arrc #content, body.arrc #contentMain, body.lrc #content, body.lrc #contentMain { width: 680px; } body.arrc #textArea, body.lrc #textArea { width: 678px; min-height: 32em; } body.arrc #rightColumn, body.lrc #rightColumn { width: 300px; } #arrcJournalInfo * { font-size: 1em; color: #000; } #arrcJournalInfo select { width: 245px; } #arrcJournalInfo input { position: relative; top: 4px; left: 5px; } body.arrc h3, body.lrc h3 { margin: 0 0 10px; line-height: normal; } body.arrc #content ul, body.lrc #content ul { margin: 0 0 1em; padding: 0; } body.arrc #content ul li, body.lrc #content ul li { margin: 0 0 2px 25px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .arrcHPBox, .lrcHPBox { position: relative; clear: both; float: left; width: 100%; margin: 0 0 12px; padding: 0 0 15px; background: #fff; border-bottom: 1px solid #b6b6e1; } .arrcHPBox .leftCol, .lrcHPBox .leftCol { float: left; width: 325px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .arrcHPBox .rightCol, .lrcHPBox .rightCol { float: right; width: 325px; } .leftBorder { padding-left: 15px; border-left: 1px solid #ccc; } body.arrc #textArea .arrcHPBox h2, body.lrc #textArea .lrcHPBox h2 { margin: 7px 7px 7px 10px; padding: 0; } body.arrc .arrcHPBox h3, body.lrc .lrcHPBox h3 { margin: 3px 7px; font-size: .8em; color: #000; } body.arrc .arrcHPBox p, body.lrc .lrcHPBox p { margin: 2px 7px; font-size: .8em; line-height: normal; } body.arrc .arrcHPBox ul.padBottom40, body.lrc .lrcHPBox ul.padBottom40 { padding-bottom: 40px !important; } body.arrc .arrcHPBox li, body.lrc .lrcHPBox li { font-size: .8em; } .arrcHPBox img#ACSphoenix, .lrcHPBox img#ACSphoenix { position: absolute; top: 2.8em; right: 50px; } .arrcHPBox img#coExcellence, .lrcHPBox img#coExcellence { position: absolute; bottom: 10px; right: 50px; } .arrcHPBox img.cover, .lrcHPBox img.cover { float: left; margin: 5px 10px 7px 7px; border: 1px solid #ccc; } .arrcHPBox .featured, .lrcHPBox .featured { position: relative; width: 325px; height: 176px; margin: 7px 0 0 10px; } .featured * { line-height: normal; } #who { position: absolute; top: 10px; right: 7px; width: 155px; background: #2f6a96; } #who h1, #who h2 { margin: 7px 3px 3px 7px !important; font-size: .75em; font-weight: normal; color: #fff; } #who h2 { margin: 0 3px 0 7px; } #who img { margin: 7px 3px; } #libSignIn { position: relative; display: block; margin: 15px 0 0; padding: 0; height: 1%; } #libSignIn label { display: block; margin: 0 0 7px; } #libSignIn label span { float: left; width: 5em; margin: 5px 7px 0 0; text-align: right; } #libSignIn label input { width: 125px; margin: 0 56px 0 0; color: #000; font-size: .9em; } #libSignIn .signIn { position: absolute; bottom: 6px; right: 0; color: #000; font-size: .9em; } body.lrc a#livewire { display: block; margin: 0 0 10px; } body.lrc a#livewireSignup { float: right; margin: 7px 7px 10px; font-size: .7em; } body.lrc div.clear { clear: both; margin: 0 0 0 7px; padding: 10px 0 0; font-size: .9em; } #newsletterHead { padding: 0 0 7px; background: #f3f7fa; border-bottom: 1px solid #ccc; } #newsletterHead h2 { margin: 0 0 0 7px; padding: 7px 0 0; font-size: .8em; color: #000; } #newsletterLogo, #lwlogo { float: left; margin: 7px 7px 0; } .newsletterRSS { margin: 7px 0 12px; } #newsletterHome { clear: both; } #newsletterHome h2 a { text-decoration: none; } #newsletterHome h2 a:hover { text-decoration: underline; } #newsletterFeature { clear: both; margin: 0; padding: 0 0 10px; border-bottom: 2px solid #e3e3e3; background: #f8f8f8; } #newsletterFeature h4 { margin: 0 0 0 10px; padding-top: 10px; color: #666; font-size: .8em; font-weight: normal; } #newsletterFeature h2 { margin: 0 0 0 10px; padding: 0; } #newsletterFeature p { margin: 5px 0 0 10px !important; font-size: .8em; } #newsletterFeature #featureImage { float: left; margin: 10px 10px 0; } .newsSection { clear: left; margin: 25px 10px 10px; } .newsSection h3 { display: block; margin: 0 0 10px !important; padding: 0 0 3px !important; border-bottom: 1px solid #369; font: bold 1em Arial, Helvetica, sans-serif; color: #00497e; } .newsSection .story { clear: left; float: left; width: 95%; margin: 0 10px 25px 0; } .newsSection h2 { margin: 0 !important; padding: 0 !important; } .newsSection p { margin: 0 !important; } .newsSection img.storyImage { float: left; margin: 0 7px 0 0; border: 1px solid #ccc; } #newsletterStory { float: left; width: 430px; padding: 0 0 7px; margin: 7px 0 0 10px; } #newsletterStory h1 { margin: 10px 0 0; padding: 0 0 10px; border-bottom: 1px solid #c4d6e2; font: bold 1.1em Arial, Helvetica, sans-serif; } #newsletterStory p { margin: 10px 0 0; } #newsletterBriefs, #relatedTitles { float: right; width: 200px; margin: 17px 7px 0 0; border: 1px solid #b6b6e1; } #relatedTitles { width: 300px; margin-top: 0; } #newsletterBriefs h3, #relatedTitles h3 { margin: 2px; padding: 3px 7px; background: #e1ecf2; color: #01487e; } #newsletterBriefs h4 { margin-top: 15px; color: #01487e; font-size: .8em; } #newsletterBriefs ul, #relatedTitles ul { margin-bottom: 7px !important; font-size: .875em; } #relatedTitles ul { margin-left: 0 !important; padding-left: 20px; } #relatedTitles li { margin: 0 0 2px 0; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } /* === END OF ARRC/LRC STYLES === */ /* === START OF LIBRARIAN ADMIN STYLES === */ body.admin #textArea { min-height: 22em; } body.admin #textArea h4 { margin: 10px 10px 0; padding: 0; } body.admin #content ul { margin-bottom: 10px; } #libAdminLogo { margin: 15px 0 15px 0; } .instLogo { float: right; margin: 3px 0 40px 0; } .instLogo img { padding: 5px; background: #fff; border: 1px solid #ccc; } .dashItem { clear: both; margin: 0 0 30px; } .dashItem img { float: left; margin: 0 10px; } #accountSelect { float: right; margin: 4px 7px 0; padding: 0; text-align: right; } #accountSelect span { font-weight: bold; font-size: .8em; } #accountSelect form { font-size: .9em; } table#journalSubs { width: 605px; margin: 10px auto 20px; padding: 0; font: .8em Arial, Helvetica, sans-serif; border: 1px solid #ccc; border-bottom: 0; } table#journalSubs th .jTitle, table#journalSubs th .expiration { font-weight: bold; } table#journalSubs th, table#journalSubs td { padding: 5px; border-bottom: 1px solid #ccc; } table#journalSubs .jTitle { width: 425px; } table#journalSubs .expiration { width: 160px; text-align: right; } #content ul#holdings { margin: 0 0 20px 20px; } #textArea .tokenNotice { float: left; margin: 0 0 7px 10px; padding: 3px; background: #eee; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; color: #29754e; display: inline; /* EXPLORER SUCKS BIGTIME */ } #tokenEntry { clear: left; margin: 0 0 10px 0; } #tokenEntry input { margin-left: 10px; } body.admin #content ul.reportTypes { margin: 0 10px 20px 20px; } table#reports { width: 655px; margin: 15px auto 30px; border: 1px solid #ccc; font-size: .875em; } table#reports td, table#reports th { padding: 3px 0; padding: 5px; } table#reports th { border-bottom: 1px solid #ccc; } table#reports .check { width: 30px; text-align: center; } table#reports .desc { width: 330px; } #usageReports label { margin: 0 0 0 10px; font-size: .875em; } #usageReports label * { vertical-align: middle; } #usageReports div { margin: 0 0 10px 20px; } #usageReports label { margin-left: 30px; } #usageReports #reqReport { margin-left: 30px; } body.admin div.error, body.user div.error { margin: 0 10px; padding: 0; background: #eee; border: 1px solid #500; font-size: .875em; } body.user div.error { margin: 0 10px 15px; } .error * { color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } .success { margin: 0 10px; background: #eee; border: 1px solid #29754e; font-size: .875em; } .success * { color: #29754e; } body.admin div.error h2, body.user div.error h2, body.user div.success h2 { margin-top: 7px !important; } table#ipTable { width: 90%; margin: 7px 0 15px 0; padding: 0; font: .9em Arial, Helvetica, sans-serif; } table#ipTable th, table#ipTable td { padding: 0 10px 10px 30px; vertical-align: top; } #textArea .emailNotice { float: left; margin: 15px 0 7px 10px; padding: 3px; background: #eee; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; color: #29754e; display: inline; /* EXPLORER SUCKS BIGTIME */ } #usageReports .emailNotice{ float:none; } form#shibboleth { margin: 20px 0; } form#shibboleth input { margin: 0 0 10px 10px; } form#shibboleth h5 { margin-top: 15px; font-weight: normal; } form#cobrandMessage { margin: 0 0 30px 0; } form#cobrandMessage div { margin: 0 0 0 7px; font: italic .8em Arial, Helvetica, sans-serif; } form#cobrandMessage #cobrandText { width: 90%; margin: 0 0 10px 7px; } form#cobrandMessage input { margin-left: 7px; } form#cobrandLogo { margin: 0 0 10px 0; } form#cobrandLogo #submit { margin: 15px 0 10px 10px; } form#linkServer div { margin: 10px 0 30px 10px; } form#linkServer span { font-size: .875em; } form#linkServer div div { margin: 0 0 15px; } form#linkServer div.imgUpload, form#cobrandLogo div.imgUpload { margin: 15px 0 0 30px; } div.imgUpload * { vertical-align: middle; font-size: .875em; } div.imgUpload .instLogo { float: none; margin: 0; } #textLink, #imgLink { margin: 0 2px 0 10px; } #openURLimg img { margin: 0 0 0 15px; vertical-align: middle; } table#admins { margin: 7px 10px 25px; padding: 0; font-size: .875em; border: 1px solid #ccc; border-bottom: 0; } table#admins td { padding: 3px; border-bottom: 1px solid #ccc; } table#admins .name, table#admins .email { width: 290px; } form#addAdmin .emailNotice { margin: 0 10px 7px; } form#addAdmin div { clear: left; margin: 7px 10px 15px; font-size: .875em; } /* === END OF LIBRARIAN ADMIN STYLES === */ /* === START OF PROFILE TEMPLATE STYLES === */ body.register #content-wrap { width: 100%; } #signInContent { float: left; width: 968px; min-height: 360px; margin: 0 5px; padding: 10px; background: #fff; border: 1px solid #9eb7cb; display: inline; /* EXPLORER SUCKS BIGTIME */ } #signInContent .right { float: right; width: 310px; margin: 0 0 0 40px; border: 1px solid #000; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox { float: left; width: 100%; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox #signInHead { height: 50px; margin: 0 0 15px; padding: 5px 0; border-bottom: 1px solid #000; } form#signInBox #acsLogo { float: right; margin: 0pt 45px 0pt 0pt; } form#signInBox h1 { float: right; margin: 0 10px; line-height: 50px; } form#signInBox label { float: left; width: 100%; margin: 10px 0 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox label span { float: left; width: 6em; margin: 0 7px; font-weight: bold; text-align: right; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox .error { float: left; margin: 7px 20px 0; color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } form#signInBox #actions { float: left; width: 100%; margin: 15px 0 0; text-align: center; } form#signInBox #acsID, form#signInBox #password { width: 150px; margin: 0; } form#signInBox #submit { margin-right: 15px; } ul#signInLinks { float: right; margin: 10px 0 5px; padding: 0; text-align: right; } ul#signInLinks li { margin: 0 7px 0 0; padding: 0; list-style: none !important; } #signInContent .aboutID { margin: 25px 0 0; } #signInContent ul { margin: 5px 0 10px 10px; padding: 0; } #signInContent ul li { margin: 0 7px 0 17px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: .875em; } #signInContent p { font-size: .875em; } /* === END OF PROFILE REGISTRATION STYLES === */ /* === START OF PROFILE STYLES === */ body.user h1 { margin: 15px 0 20px 10px !important; font-size: 1.1em; } #registerAlerts h3 { clear: left; margin: 10px 0 0 10px; } #registerAlerts ul.jList { display: block; margin: 0 0 25px 10px; padding: 0; list-style: none; } #registerAlerts div { margin: 0 0 15px 10px; } #registerAlerts span { font-size: .875em; } #registerAlerts div.type { margin: 7px 30px 25px 50px; } #registerAlerts div.type div { display: inline; margin: 7px 0 0 7px; } #registerAlerts div.type input { margin-right: 0; } #registerAlerts div.type label { margin-right: 20px; } #registerAlerts #submit { clear: both; float: left; margin: 20px 0 15px 10px; } form#citAlertArticles, form#favArticles { padding-bottom: 20px; } div.savedSearch { position: relative; float: left; width: 805px; margin: 0 10px 15px; padding: 0 0 7px; background: #ffffe4; border: 1px solid #ccc; } div.savedSearch h5 { width: 490px; margin: 7px 0 10px; padding: 0; } div.savedSearch .buttons { position: absolute; top: 0; right: 0; } div.savedSearch a.button { float: right; margin: 7px 5px 0 0; padding: 1px 2px 0; border: 1px solid #369; font-size: .875em; line-height: 1.4em; text-decoration: none; } div.savedSearch a img { float: right; margin: 7px 10px 0 0; } div.savedSearch a.button:hover { background: #369; color: #fff; } div.savedSearch div { margin: 0 0 0 10px; font-size: .875em; } form#articleSort { margin: 0 0 20px 10px; font-size: .8em; } body.user .articleBox { font-size: .875em; } body.user #textArea .articleBox h2 { margin: 0; } .articleOptions a.removeArticle { width: 93px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/removeArticle.png); } .articleOptions a.removeFavorites { width: 130px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/removeFav.png); } /* -- Cart styles -- */ #purchasePage { margin: 0 70px; } #purchasePage h1 { color: #000; } #progressBar { width: 100%; margin: 0; padding: 0; text-align: center; } #purchasePage ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #cartItems { margin-top: 30px; } #cartItems .articleBox { padding-bottom: 7px; } #cartItems #submit, #paymentForm #submit, #finalizeForm #submit { margin: 20px 0 0 10px; } #paymentForm { display: block; margin-top: 30px; font-size: .8em; } #paymentForm h3 { font-size: 1.2em; margin: 30px 0 10px; } #paymentForm p { font-size: 1em; } #paymentForm div { clear: both; margin: 0 0 7px; } #paymentForm label { float: left; width: 12em; margin: 0 15px 7px 0; font-weight: bold; text-align: right; } #paymentForm #termsAgreement { margin: 15px 0; padding: 10px 10px 0 10px; border: 1px solid #369; } #paymentForm #termsAgreement * { margin-left: 0; } #paymentForm #termsAgreement label { float: none; } #paymentSection, #productSection { clear: right; margin: 7px 10px; padding: 15px 0 7px; border-top: 1px solid #ccc; } #paymentSection h4, #productSection h4 { margin: 0 0 7px; padding: 0; } #paymentSection div { margin: 0 0 0 10px; font-size: .8em; } a.editLink { float: right; margin: 0 0 10px; } #productSection ul { clear: right; margin: 0; padding: 0; list-style: none; } #productSection ul li { margin: 0 0 15px; padding: 0; font-size: .875em; font-family: Arial, Helvetica, sans-serif; } #productSection h5 { margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 1em; } #productSection li div.rmButton { float: right; margin: 0 0 0 7px; } #productSection li div.price { float: right; width: 6em; margin: 5px 0 0 15px; padding: 0 0 0 7px; text-align: right; } #totalPrice { clear: right; float: right; margin: 0; padding: 0; font: bold .875em Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#cartItems #totalPrice { margin: 0 105px 0 0; } /* === END OF PROFILE STYLES === */ /* === START OF HELP STYLES === */ body.help #content-wrap { width: 765px; } body.help #content, body.help #contentMain { width: 760px; } body.help #textArea { width: 758px; min-height: 25em; } #helpMain { clear: both; display: block; margin: 0 0 0 2px; padding: 0 0 0 192px; background: #fff url(/templates/jsp/_style2/_achs/images/helpnav-bg.gif) repeat-y; min-height: 25em; } #helpMain ol { margin: 10px 0 0; padding: 0 0 0 32px; } #helpMain ol li { margin: 0; padding: 0 0 7px; font-size: .875em; } #helpMain ol a { text-decoration: none; } #helpMain ol a:hover { text-decoration: underline; } #helpNav { position: absolute; top: 42px; left: 3px; width: 175px; margin: 0; padding: 0; border-left: 1px solid #b6b6e1; border-right: 1px solid #b6b6e1; background: #d1e6f6; font-family: Arial, Helvetica, sans-serif; } #helpNav h2 { margin: 0; padding: 5px 3px 5px 5px; background: #369; color: #fff !important; font-size: .75em; line-height: normal; } #helpNav ul { margin: 0; padding: 0; list-style: none; } #helpNav ul li { display: block; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .95em; } #helpNav ul li a { display: block; text-decoration: none; padding: 2px 0 1px; } #helpNav ul li a:hover { background: #fff; } #helpNav ul li a span { display: block; margin: 0 2px 0 5px; font-size: .75em; color: #369; } #textArea #helpMain h1 { margin: 0 0 20px; font-size: 1em; } #textArea #helpMain p { margin-left: 0; } #searchHelp { margin: 15px 3px 0 3px; font-size: .75em; } #searchHelp input { width: 150px; margin: 0 0 5px; } #searchHelp #searchHelpSubmit { width: auto; } body.help #rightColumn { width: 220px; padding: 0 0 35px; background: #fff; border: 1px solid #aebedc; min-height: 25em; } body.help #rightColumn h2 { margin: 2px 2px 10px 2px; padding: 5px 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } body.help #rightColumn h3 { margin: 7px 7px 5px 7px; font-size: .875em; } body.help #rightColumn h4 { margin: 7px 7px 0 7px; padding: 0; font-size: .75em; } body.help #rightColumn div { margin: 1px 7px; font-size: .75em; line-height: normal; } body.help #rightColumn div.marginTop { margin-top: 10px; } body.help #rightColumn hr { display: block; height: 1px; margin: 12px 7px; padding: 0; background: #aebedc; border: 0; } /* === END OF HELP STYLES === */ /* === DROPDOWN MENU STYLES BELOW === */ #nav { display: block; position: absolute; top: 0; left: 0; width: 1000px; height: 30px; margin: 0; padding: 0; list-style: none; } #nav li { position: relative; float: left; margin: 0; padding: 0; text-align: center; } /* === BEGIN PUBS MENUS === */ #navPubsHome a, #navJournals a, #navBooks a, #navAuthors a, #navLibrarians a, #navMembers a, #navAboutUs a, #navAlerts a, #navHelp a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/pubsNav.gif) no-repeat; } /* bg image initial states */ #navPubsHome a { width: 50px; background-position: 0 0; } #navJournals a { width: 96px; background-position: -50px 0; } #navBooks a { width: 63px; background-position: -146px 0; } #navAuthors a { width: 146px; background-position: -209px 0; } #navLibrarians a { width: 85px; background-position: -355px 0; } #navMembers a { width: 105px; background-position: -440px 0; } #navAboutUs a { width: 84px; background-position: -545px 0; } #navAlerts a { width: 74px; background-position: -629px 0; } #navHelp a { width: 57px; background-position: -703px 0; } /* bg image hover states... all .over classes are for IE */ #navPubsHome:hover a, #navPubsHome.over a { background-position: 0 -30px; } #navJournals:hover a, #navJournals.over a { background-position: -50px -30px; } #navBooks:hover a, #navBooks.over a { background-position: -146px -30px; } #navAuthors:hover a, #navAuthors.over a { background-position: -209px -30px; } #navLibrarians:hover a, #navLibrarians.over a { background-position: -355px -30px; } #navMembers:hover a, #navMembers.over a { background-position: -440px -30px; } #navAboutUs:hover a, #navAboutUs.over a { background-position: -545px -30px; } #navAlerts:hover a, #navAlerts.over a { background-position: -629px -30px; } #navHelp:hover a, #navHelp.over a { background-position: -703px -30px; } /* === END PUBS MENUS === */ /* === BEGIN JOURNAL DROPDOWN MENUS === */ #navJournalHome a, #navBrowse a, #navASAP a, #navCurrent a, #navMultimedia a, #navOnlineNews a, #navSubmission a, #navSubscription a, #navAbout a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/journalNav.gif) no-repeat; } /* bg image initial states */ #navJournalHome a { width: 49px; background-position: 0 0; } #navBrowse a { width: 139px; background-position: -49px 0; } #navASAP a { width: 107px; background-position: -188px 0; } #navCurrent a { width: 102px; background-position: -295px 0; } #navMultimedia a { width: 92px; background-position: -397px 0; } #navOnlineNews a { width: 95px; background-position: -489px 0; } #navSubmission a { width: 148px; background-position: -584px 0; } #navSubscription a { width: 99px; background-position: -732px 0; } #navAbout a { width: 87px; background-position: -831px 0; } /* bg image hover states... all .over classes are for IE */ #navJournalHome:hover a, #navJournalHome.over a { background-position: 0 -30px; } #navBrowse:hover a, #navBrowse.over a { background-position: -49px -30px; } #navASAP:hover a, #navASAP.over a { background-position: -188px -30px; } #navCurrent:hover a, #navCurrent.over a { background-position: -295px -30px; } #navMultimedia:hover a, #navMultimedia.over a { background-position: -397px -30px; } #navOnlineNews:hover a, #navOnlineNews.over a { background-position: -489px -30px; } #navSubmission:hover a, #navSubmission.over a { background-position: -584px -30px; } #navSubscription:hover a, #navSubscription.over a { background-position: -732px -30px; } #navAbout:hover a, #navAbout.over a { background-position: -831px -30px; } /* === END JOURNAL DROPDOWN MENUS === */ /* === BEGIN ARRC MENUS === */ #navArrcHome a, #navSubReview a, #navBenefits a, #navCopyPerm a, #navPubTools a, #navNewsAnnounce a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/arrcNav.gif) no-repeat; } /* bg image initial states */ #navArrcHome a { width: 50px; background-position: 0 0; } #navSubReview a { width: 147px; background-position: -50px 0; } #navBenefits a { width: 141px; background-position: -197px 0; } #navCopyPerm a { width: 171px; background-position: -338px 0; } #navPubTools a { width: 121px; background-position: -509px 0; } #navNewsAnnounce a { width: 166px; background-position: -630px 0; } /* bg image hover states... all .over classes are for IE */ #navArrcHome:hover a, #navArrcHome.over a { background-position: 0 -30px; } #navSubReview:hover a, #navSubReview.over a { background-position: -50px -30px; } #navBenefits:hover a, #navBenefits.over a { background-position: -197px -30px; } #navCopyPerm:hover a, #navCopyPerm.over a { background-position: -338px -30px; } #navPubTools:hover a, #navPubTools.over a { background-position: -509px -30px; } #navNewsAnnounce:hover a, #navNewsAnnounce.over a { background-position: -630px -30px; } /* === END ARRC MENUS === */ /* === BEGIN LRC MENUS === */ #navLrcHome a, #navLrcProd a, #navLrcSubs a, #navLrcLicensing a, #navLrcTools a, #navLrcLivewire a, #navLrcContact a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/lrcNav.gif) no-repeat; } /* bg image initial states */ #navLrcHome a { width: 50px; background-position: 0 0; } #navLrcProd a { width: 79px; background-position: -50px 0; } #navLrcSubs a { width: 157px; background-position: -129px 0; } #navLrcLicensing a { width: 147px; background-position: -286px 0; } #navLrcTools a { width: 121px; background-position: -433px 0; } #navLrcLivewire a { width: 145px; background-position: -554px 0; } #navLrcContact a { width: 110px; background-position: -699px 0; } /* bg image hover states... all .over classes are for IE */ #navLrcHome:hover a, #navLrcHome.over a { background-position: 0 -30px; } #navLrcProd:hover a, #navLrcProd.over a { background-position: -50px -30px; } #navLrcSubs:hover a, #navLrcSubs.over a { background-position: -129px -30px; } #navLrcLicensing:hover a, #navLrcLicensing.over a { background-position: -286px -30px; } #navLrcTools:hover a, #navLrcTools.over a { background-position: -433px -30px; } #navLrcLivewire:hover a, #navLrcLivewire.over a { background-position: -554px -30px; } #navLrcContact:hover a, #navLrcContact.over a { background-position: -699px -30px; } /* === END LRC MENUS === */ /* === BEGIN LIB ADMIN MENUS === */ #navLibAdminHome a, #navLibAdminSubs a, #navLibAdminUsage a, #navLibAdminAccess a, #navLibAdminCobrand a, #navLibAdminLinkres a, #navLibAdminAdmin a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/libAdminNav.gif) no-repeat; } /* bg image initial states */ #navLibAdminHome a { width: 50px; background-position: 0 0; } #navLibAdminSubs a { width: 102px; background-position: -50px 0; } #navLibAdminUsage a { width: 104px; background-position: -152px 0; } #navLibAdminAccess a { width: 97px; background-position: -256px 0; } #navLibAdminCobrand a { width: 90px; background-position: -353px 0; } #navLibAdminLinkres a { width: 97px; background-position: -443px 0; } #navLibAdminAdmin a { width: 106px; background-position: -540px 0; } /* bg image hover states... all .over classes are for IE */ #navLibAdminHome:hover a, #navLibAdminHome.over a { background-position: 0 -30px; } #navLibAdminSubs:hover a, #navLibAdminSubs.over a { background-position: -50px -30px; } #navLibAdminUsage:hover a, #navLibAdminUsage.over a { background-position: -152px -30px; } #navLibAdminAccess:hover a, #navLibAdminAccess.over a { background-position: -256px -30px; } #navLibAdminCobrand:hover a, #navLibAdminCobrand.over a { background-position: -353px -30px; } #navLibAdminLinkres:hover a, #navLibAdminLinkres.over a { background-position: -443px -30px; } #navLibAdminAdmin:hover a, #navLibAdminAdmin.over a { background-position: -540px -30px; } /* === END LIB ADMIN MENUS === */ /* hide the text for each navigation heading */ #nav li span { display: none; } /* the dropdown list styles */ #nav li ul { position: absolute; top: 28px; left: -1px; width: 187px; margin: 0; padding: 2px 0 0; background: #e9edf4; border-left: 1px solid #369; border-right: 1px solid #369; list-style: none; display: none; z-index: 201; } #nav li:hover ul, #nav li.over ul { display: block; } #nav li ul li { position: static; clear: left; float: left; display: block; width: 187px; margin: 0; padding: 0; border-bottom: 1px solid #369; text-align: left; } #nav li ul li a { display: block; width: 187px; height: auto; margin: 0; padding: 5px 0; font: .7em Arial, Helvetica, sans-serif; color: #021351; text-decoration: none; background: transparent; line-height: normal; } #nav li ul li a:hover { display: block; background: #fff !important; cursor: pointer; cursor: hand; /* for IE 5.5 */ } #nav li ul li a span { display: block; width: 174px; margin: 0 2px 0 4px; } #nav li#navAbout ul, #nav li#navAbout ul li, #nav li#navAbout ul li a { width: 168px; } #nav li#navAbout ul li a span { width: 155px; } /* === END OF DROPDOWN MENU STYLES === */ /* === START OF JOURNAL SELECTOR LAYER === */ #pubsSelector { position: absolute; top: 4.6em; right: 0; float: left; width: 727px; padding: 0 0 10px; border: 1px solid #849dad; background: #d8e3ed; z-index: 6000; font: .7em Arial, Helvetica, sans-serif; } #pubsSelector a, #pubsSelector a:visited { color: #384c88; text-decoration: none; } #pubsSelector a:hover { color: #fff; background: #369; } #pubsSelector #colOne { float: left; margin: 10px 0 0 10px; padding: 0; border-right: 1px solid #a5bac7; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector #colTwo { clear: none; float: left; width: 200px; margin: 10px 10px 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector ul { float: left; width: 230px; margin: 0 10px 0 0; padding: 0; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector ul li { clear: left; float: left; width: 230px; margin: 0 0 2px; padding: 0; } #pubsSelector #colTwo ul { width: 200px; margin-bottom: 15px; } #pubsSelector #colTwo ul li { width: 200px; } #pubsSelector ul li.letter { margin: 7px 0 0; font-weight: bold; color: #444; } #pubsSelector #colTwo ul li { margin-bottom: 5px; } #closeMenu { position: absolute; top: 5px; right: 5px; width: 15px; height: 15px; } #pubsSelector h4 { clear: left; display: block; margin: 0; font-size: 1em; text-decoration: underline; color: #033451; } /* === END OF JOURNAL SELECTOR LAYER === */ /* === SHOW MULTIPLE ABSTRACTS === */ h3.multiAbsHead { margin: 7px 7px 15px; font-size: 1em; color: #000; } /* === openURL === */ .openURL img { border: 1px solid #ccc; } .articleLinksIcons .icons .openURL { float: right; margin: 10px 0 5px; } body.article #articleMeta .openURL { margin: 5px 0; } /* Electronic Proof */ body.proof #content-wrap { clear: both; width: 990px; } body.proof #content, body.proof #contentMain, body.proof #textArea, body.proof #contentHead { width: 100%; } body.proof #textArea h2 { clear: left; margin-top: 30px; color: #333; } body.proof p { clear: left; } body.proof #textArea .returnLink, body.proof #textArea .commentForm { display: inline; float: none; margin: 7px 0 0; border: 0 !important; } body.proof #textArea .returnLink a, body.proof #textArea .commentForm a { float: left; padding: 1px 4px; } body.proof #textArea .commentForm { width: 7.25em; } body.proof #textArea .proofInstructions h2 { margin-top: 0; } body.proof #textArea ul { margin: 7px 20px 30px; padding: 0; } body.proof #textArea ul li { margin: 0 0 7px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } body.proof #textArea ul li ul { margin-bottom: 0; } body.proof #textArea ul li div { margin-bottom: 15px; margin-left: 20px; } #articleID { float: left; width: 956px; margin: 0 0 15px 10px; padding: 7px; font-size: .8em; background: #eee; } #articleID h1 { margin: 0 0 3px 0; font-size: 1.2em; color: #000; } #proofForm { display: block; margin: 25px 0 0; padding: 0; } #proofForm label { display: block; margin: 7px 7px 7px 15px; font-size: .8em; } #proofForm textarea { width: 97%; margin: 7px 10px 0 10px; } #proofForm #submit { margin: 15px 0 15px 10px; } body.proof #textArea ul li #contactBlock { font-family: Arial, Helvetica, sans-serif; margin: 7px 0 7px 50px; } body.proof #textArea ul li #contactBlock div { margin: 0; } /* === Common Styles === */ div.errorBlock { min-height: 300px; margin: 10px; padding: 10px; background: #fff; font-size: .875em; } div.errorBlock h2 { margin-bottom: 1em; color: red; font-size: 1.2em; } div.errorBlock h3 { font-size: 1.1em; margin-bottom: 1em; } #contentHead { position: relative; width: 796px; margin: 0 0 10px; padding: 0 0 5px; border: 0; background: #fff; } body.arrc #contentHead, body.lrc #contentHead { width: 678px; } body.arrc #twoColText #contentHead, body.lrc #twoColText #contentHead { width: 517px; } body.help #contentHead { width: 758px; } #twoColText #contentHead { width: 635px; margin-left: 1px; } #contentHead h1, #contentHead h2, body.coverArt #textArea h2, body.issueList #textArea h2 { margin: 0 2px; padding: 7px 0 7px 7px; font: bold 1em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #2d5073; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } #twoColText { min-height: 45.35em; margin: 0; padding: 0 0 10px 160px; background: #fff url(/templates/jsp/_style2/_achs/images/sidenav-bg.gif) repeat-y; } #sideNav { position: absolute; top: 1px; left: 1px; width: 160px; margin: 0; padding: 0; border-right: 1px solid #b6b6e1; background: #d1e6f6; font-family: Arial, Helvetica, sans-serif; } #sideNav h2 { margin: 0; padding: 3px; background: #369; color: #fff !important; font-size: .8em; line-height: normal; } #sideNav ul { margin: 0 !important; padding: 0; list-style: none; } #sideNav ul li { display: block; margin: 0 !important; padding: 0 !important; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .95em; } #sideNav ul li a { display: block; text-decoration: none; padding: 2px 0 1px; } #sideNav ul li a:hover { background: #fff; } #sideNav ul li a span { display: block; margin: 0 2px 0 5px; font-size: .75em; color: #369; } #sideNav ul li.onPage a { background: #ffffe4 url(/templates/jsp/_style2/_achs/images/onPage.gif) no-repeat right; } #sideNav ul li.onPage a span { font-weight: bold; } .sideBox { position: relative; top: 0; clear: right; float: right; margin: 0 10px 10px; padding: 7px 7px 0; border: 1px solid #888; font-family: Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } .pageTop { top: 11px; } .sideBox h2 { margin: 0 !important; color: #333 !important; } .sideBox p { margin: 0 0 10px !important; font-size: .8em; line-height: normal !important; } .sideBox .credit { text-align: right; margin-bottom: 5px !important; font: italic .7em Arial, Helvetica, sans-serif !important; } .sideBox .caption { margin-bottom: 7px !important; font-size: .8em !important; } #articleBody .sideBox { font-size: 1.145em; } .leftSide { clear: left; float: left; margin: 0 10px 10px; } .fullBox { clear: both; margin: 15px auto; padding: 0 10px; text-align: center; border: 1px solid #ccc; } .fullBox .credit { text-align: right; margin: 0 0 10px 0; font: italic .7em Arial, Helvetica, sans-serif !important; } .fullBox .caption { font-size: .8em !important; text-align: left; } .fullBox p { width: auto !important; text-align: left; } .fullBox div { font-size: .8em; text-align: left; } #monthYearNav { float: right; } #monthYearNav * { vertical-align: middle; } #monthYearNav div, #monthYearNav strong { margin: 5px 0; font-size: .8em; font-family: Arial, Helvetica, sans-serif; } #monthYearNav input { margin: 0 7px 0 0; } div.button { float: left; border: 1px solid #369 !important; } div.button a, div.button a:hover { display: block !important; padding: 1px 2px; font-size: .9em; color: #fff !important; background: #69c !important; text-decoration: none !important; } div.button a:hover { background: #369 !important; } .backButton { position: absolute; top: 0; right: 0; height: 29px; background: #fff; } .backButton a { display: block; height: 21px; margin: 1px; padding: 5px 7px 0 30px; background: #f7fbfd url(/templates/jsp/_style2/_achs/images/back-button.gif) no-repeat 5px 5px; border: 1px solid #d8ebf9; font-size: .75em; } .backButton a:hover { background-position: 5px -18px; } .audioBoxWrap { padding-top: 10px; border-top: 1px solid #ccc; } .audioBoxWrap img.cover { float: right; margin-left: 7px; margin-right: 7px; border: 1px solid #ccc; } .audioBoxWrap h2 { margin-top: 0 !important; color: #333 !important; font-size: .9em; } .audioBoxWrap div { clear: left; margin-left: 10px; font-size: .8em; } .audioBoxWrap p { margin-bottom: 0 !important; } .audioBoxWrap .info { padding: 2px 0; font-family: Arial, Helvetica, sans-serif; } #textArea div.landingBox { width: 318px; float: left; margin: 0 8px 18px 11px; display: inline; } #textArea div.landingBox h2 { margin-top: 8px; margin-bottom: 0px; padding-top: 0; } #textArea div.landingBox h3 { margin-bottom: 5px; padding-bottom: 0; } #textArea div.landingBox img { float: right; margin: 10px 0 10px 10px; } #textArea #contentHead a.landingReturn { float: right; margin: 7px; font-size: .75em; } .ppTable { margin: 10px auto; font-size: .875em; } .bgcolor2 { background: #69c; } .bgcolor5 { background: #ccc; } .bgcolor6 { background: #f2f2f2; } .alignH2 { margin-top: 1em !important; } .centered { text-align: center !important; } .bottom { margin: 5px 0 10px !important; } .padBox { padding: 10px !important; } .padTop { padding-top: 7px !important; } .reallyPadTop { padding-top: 15px !important; } .padBottom { padding-bottom: 7px !important; } .marginLeft10 { margin-left: 10px !important; } .marginRight10 { margin-right: 10px !important; } .marginSides10 { margin-left: 10px !important; margin-right: 10px !important; } ul.marginBottom { margin-bottom: 17px !important; } .hide { display: none; } .flLeft { float: left; margin-right: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .flRight { float: right; margin-left: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .alignRight { text-align: right !important; } .clearBoth { clear: both !important; } br.clearBoth { line-height: 7px; } .noBorder { border: 0 !important; } .noBreak { white-space: nowrap !important; } .noMargin { margin: 0 !important; } .noPadding { padding: 0 !important; } .small { font-size: .9em !important; } .smaller { font-size: .8em !important; } .large { font-size: 1.1em !important; } .larger { font-size: 1.2em !important; } .noBold { font-weight: normal !important; } .bordered { border: 1px solid #ccc !important; } .alignMid * { vertical-align: middle !important; } .w50 { width: 50px !important; } .w75 { width: 75px !important; } .w100 { width: 100px !important; } .w125 { width: 125px !important; } .w150 { width: 150px !important; } .w175 { width: 175px !important; } .w200 { width: 200px !important; } .w225 { width: 225px !important; } .w250 { width: 250px !important; } .w275 { width: 275px !important; } .w300 { width: 300px !important; } .w325 { width: 325px !important; } .w350 { width: 350px !important; } .w370 { width: 370px !important; } .w375 { width: 375px !important; } .w400 { width: 400px !important; } .w425 { width: 425px !important; } .w450 { width: 450px !important; } .w475 { width: 475px !important; } .w500 { width: 500px !important; } .w525 { width: 525px !important; } .w550 { width: 550px !important; } .w575 { width: 575px !important; } .w600 { width: 600px !important; } .w625 { width: 625px !important; } .w650 { width: 650px !important; } .w675 { width: 675px !important; } .w700 { width: 700px !important; } .w725 { width: 725px !important; } .w750 { width: 750px !important; } .w775 { width: 775px !important; } .w800 { width: 800px !important; } a.underline { text-decoration: underline !important; } a.underline:hover { text-decoration: none !important; } ul.noBullet { margin: 15px 0; padding: 0; list-style: none; } ul.noBullet li { margin: 0 0 5px; padding: 0; } ul.noBullet li img { margin-right: 7px; } ul.noBullet li a { text-decoration: none; vertical-align: middle; } ul.noBullet li a:hover { text-decoration: underline; } /* === Alternate Color Schemes === */ /* Green */ body.green { background: #fff url(/templates/jsp/_style2/_achs/images/body-bg-green.gif) repeat-x; } #container.green #nav-wrap-journal { background: transparent url(/templates/jsp/_style2/_achs/images/navbar-bg-green.gif) no-repeat; } #container.green #navJournalHome a, #container.green #navBrowse a, #container.green #navASAP a, #container.green #navCurrent a, #container.green #navMultimedia a, #container.green #navOnlineNews a, #container.green #navSubmission a, #container.green #navSubscription a, #container.green #navAbout a { background-image: url(/templates/jsp/_style2/_achs/images/journalNav-green.gif); } #container.green #nav li ul li a { background: transparent; } #container.green .findIssue { background: #12703d; } #container.green .findCitation { background: #77aa90; } #container.green #articleAreaHeader { background-image: url(/templates/jsp/_style2/_achs/images/articleView-tabs-bg-green.gif); } #container.green #articleAreaHeader ul li a { background-image: url(/templates/jsp/_style2/_achs/images/articleView-tabs-green.gif); } #container.green h2, #container.green h3 { color: #29754e; } #container.green .findIssue h3, #container.green .findCitation h3 { color: #fff; } #container.green #mainBody { background: #f2fced url(/templates/jsp/_style2/_achs/images/topright-green.gif) right top no-repeat; } #container.green #content-wrap { background: transparent url(/templates/jsp/_style2/_achs/images/topleft-green.gif) left top no-repeat; } #container.green .sideColBox, #container.green .rtColBox { border-color: #a3cdb7; } #container.green #content, #container.green #articleContent, #container.green #contentHead, #container.green #slides, #container.green #articleArea, #container.green .articleBox, #container.green #abstractBox, #container.green #supInfoBox, #container.green #aiContent, #container.green #nav li ul, #container.green #nav li ul li, #container.green #sideNav, #container.green #textArea, #container.green #tocHead, #container.green #newsIndexContent { border-color: #a3cdb7; } #container.green #citationJump .info { background: url(/templates/jsp/_style2/_achs/images/info-green.png); } #container.green .articleOptions .viewAbs { background: url(/templates/jsp/_style2/_achs/images/viewAbs-green.png); } #container.green .articleOptions .downCitations { background: url(/templates/jsp/_style2/_achs/images/downCit-green.png); } #container.green .articleOptions .showThumbs { background: url(/templates/jsp/_style2/_achs/images/showAllThumbs-green.png); } #container.green #articleArea .articleOptions .info { background: url(/templates/jsp/_style2/_achs/images/info-whitebg-green.png); } #container.green #rssBox a { background: url(/templates/jsp/_style2/_achs/images/rssbox-green.gif); } #container.green .rtColBox .formSubmit { background: url(/templates/jsp/_style2/_achs/images/go-green.png); } body.green #pageFooter-wrap { background: #086030; } #container.green #contentHead h1, #container.green #contentHead h2, #container.green #articleHead h2, #container.green .rtColBox h2, #container.green #tocHead h2, body.coverArt #container.green #textArea h2, body.issueList #container.green #textArea h2, body.authIndex #container.green #aiContent h2 { background: url(/templates/jsp/_style2/_achs/images/h2-bg2-green.gif) repeat-x; color: #29754e; } #container.green #articleTools { background: #dbf0e5; } #container.green #articleTools h3 { color: #fff; background: #56a074; } #container.green #articleTools li a, #container.green #articleTools li a:visited, #container.green #articleTools ul.history li { background-color: #dbf0e5; border-left-color: #29754e; } #container.green #articleContent { background: #fff url(/templates/jsp/_style2/_achs/images/articleContent-bg-green.gif) repeat-y right top; } #container.green #articleMain #links { background: url(/templates/jsp/_style2/_achs/images/gradient1-green.gif) repeat-x; } #container.green #links ul li.onPage span, #container.green #links ul li a:hover { background: #29754e; } #container.green #articleNav { background: url(/templates/jsp/_style2/_achs/images/articleNav-green.gif) no-repeat 0 -58px; } #container.green #articleNav a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-green.gif); } #container.green #articleNavB .tocLink { background-image: url(/templates/jsp/_style2/_achs/images/tocLink-green.gif); } #container.green #articleNavC, #container.green #articleNavC a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-ASAP-green.gif); } #container.green #articleNavD, #container.green #articleNavD a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-JAM-green.gif); } #container.green .articleGroupHead { background: #12703d url(/templates/jsp/_style2/_achs/images/toc-h3-tl-green.gif) no-repeat left top; } #container.green .articleGroup h3 { color: #fff; background: url(/templates/jsp/_style2/_achs/images/toc-h3-tr-green.gif) no-repeat right top; } #container.green #issueNav { background: url(/templates/jsp/_style2/_achs/images/issueNav-green.gif) no-repeat 0 -58px; } #container.green #issueNav a { background-image: url(/templates/jsp/_style2/_achs/images/issueNav-green.gif); } #container.green #volumeNav { background-image: url(/templates/jsp/_style2/_achs/images/volumeNav-green.gif); } #container.green #volumeNav a { background-image: url(/templates/jsp/_style2/_achs/images/volumeNav-green.gif); } #container.green div.alphaSelect, #container.green div.alphaSelect a, #container.green div.alphaSelect a span.onPage { background-image: url(/templates/jsp/_style2/_achs/images/alphabet-green.gif); } #container.green #twoColText { background-image: url(/templates/jsp/_style2/_achs/images/sidenav-bg-green.gif); } #container.green #twoColText h1 { color: #29754e; } #container.green #twoColText h2.subtitle { color: #333; } #container.green #sideNav { background: #dbf0e5; } #container.green #sideNav h2 { background: #12703d; } #container.green a.showThumbs { background-image: url(/templates/jsp/_style2/_achs/images/showAllThumbs-green.png); } #container.green #onlineNewsNav a { background-image: url(/templates/jsp/_style2/_achs/images/onlineNewsNav-green.gif); } /* Added by Atypon */ #issueList .closed ul { display: none; } #issueList .closed .plusMinus { background-position: 0 0 } .citation_year { font-weight: bold; } .citation_volume { font-style: italic; } .figure .altMedium, .figure .altLarge, .figureNav .disabled, .disabled { display: none; } #figureViewerNav .figureNav span .index { font-size: 1em; } ul.references li { margin-bottom: 1em; } ul.references li .NLM_citation { margin-bottom: 0.5em; } .balloon div { display: inline; } .balloon .NLM_citation span { display: inline; } .sfxLink img { margin-left: 0.5em; margin-bottom: -5px; } .NLM_disp-formula { margin: 1em; text-align: center; } #articleBody .NLM_p, #articleBody p { width: 610px; margin: 0pt 0pt 1.5em; padding: 0pt; line-height: 1.6em; word-wrap: break-word; } #articleBody p p, #articleBody .NLM_p p, #articleBody .footnote p, #articleBody #abstractBox p, #articleBody .caption p, #articleBody .NLM_table-wrap p, #articleBody li p, body.newsStory #articleBody p, #articleBody .quote p, #articleBody .boxed-text-float p { width: auto; } #articleBody img { max-width: 570px; } #articleBody .NLM.disp-formula img { max-width: 500px; } #articleBody .graphic_meta { font: .8em Arial, Helvetica, sans-serif; } #articleBody .graphic_meta p { width: 570px; margin-top: .2em; margin-bottom: .2em; line-height: normal; } p.last { margin-bottom: 0; } table p.last, .NLM_table-wrap p.last, .balloon p.last, #references p.last, #correspondence p.last, #references .note { display: inline; } #articleBody .NLM_p sup, #articleBody p sup { line-height: 0; } a.ref { text-decoration: none; } a.ref sup, sup a.ref { text-decoration: underline; } .NLM_table-wrap, .NLM_table-group-wrap > table > table { border: 1px solid black; border-width: 1px 0; } .NLM_table-wrap { /* This entry needs to be called out separately or else IE6 won't recognize it (because the > table > table part of the above entry breaks IE's parsing of the code */ clear: both; width: 600px; overflow: auto; } #articleBody div .NLM_table-wrap, #articleBody div table { width: auto; max-width: 550px; } .NLM_table-group-wrap { margin: 0; padding: 0; } .NLM_table-wrap table { width: auto; margin: 1em 2px; padding: 1em 0; border: 1px solid black; } .NLM_table-group-wrap > table { width: 100%; margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table > tbody { margin: 0; padding: 0; } .NLM_table-group-wrap > table > tbody > tr { margin: 0; padding: 0; } .NLM_table-group-wrap > table > tbody > tr > td { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table table { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table table td { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-wrap-foot { margin-top: 0.5em; } .NLM_table-wrap .NLM_caption, .NLM_table-group-wrap .NLM_caption { font-weight: bold; } .NLM_citation .NLM_year { font-weight: bold; } /* Added by Atypon, QA.2 - fn reference */ #articleTools .history a.ref, #articleTools .history a.ref:visited, #articleTools .history a:hover { display: inline; background: none !important; border: none !important; } .originalMathML, .generatedMathML { display: block; border: 1px solid #777; background-color: #eee; padding: 5px; } a.coverArt_link { border: 0; } .journalCover img, #tocCover img, a.coverArt_link img { width: 115px; } .privateChar { margin-bottom: 2px; vertical-align: middle; } .column h3 { margin-left: 10px; } /*to override style.css*/ td { font-family:inherit; font-size:inherit; } #articleAreaHeader ul li a#justAcceptedTab.on { background-position: -4px -29px !important; } #articleAreaHeader ul li a#justAcceptedTab.off { background-position: -4px -4px !important; } #articleAreaHeader ul li a#justPublishedTab.on { background-position: -99px -29px !important; } #articleAreaHeader ul li a#justPublishedTab.off { background-position: -99px -4px !important; } #articleAreaHeader ul li a#currentIssueTab.on { background-position: -194px -29px !important; } #articleAreaHeader ul li a#currentIssueTab.off { background-position: -194px -4px !important; } #articleAreaHeader ul li a#mostReadTab.on { background-position: -289px -29px !important; } #articleAreaHeader ul li a#mostReadTab.off { background-position: -289px -4px !important; } #articleAreaHeader ul li a#mostCitedTab.on { background-position: -384px -29px !important; } #articleAreaHeader ul li a#mostCitedTab.off { background-position: -384px -4px !important; } .teaser { font-size: 0.8em; } .hidden { display: none; } #abstractBox .figure { display: inline; background: none; float: none; width: auto; border: none; padding: 0; margin: 0; } .entity { vertical-align: middle; } .entityD { vertical-align: bottom; } /* Atypon change - move */ #supInfoBox h3 { margin: 7px 0 0 7px; font-size: 1em; color: #000; } #supInfoBox ul { margin: 0 0 20px; padding: 0 0 0 25px; } #supInfoBox ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #supInfoBox ul li img { margin: 0 5px 0 0; } #supInfoBox p { font-size: .875em; margin: 10px 7px 7px 7px; } /* b15394 */ span.perennialReviewAddition { color: green; } span.perennialReviewDeletion { color: red; text-decoration: line-through; } .artTypeNotFound { font-size: 0.8em; margin-bottom: 1em; } /*added by Atypon*/ #articleBody #references .figures, #articleBody #references a.thumbnail{ float: none; } .quote { clear: both; display: block; margin: 1em 20px; padding: 10px 15px 1px; border: 1px solid #ccc; font: bold 1em Verdana, Arial, Helvetica, sans-serif; background: #efefef; color: #555; text-align: justify; } div.boxed-text-, div.boxed-text-anchor, div.boxed-text-float { clear: both; margin: 1em 20px; padding: 7px 10px 1px; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; background: #efefef; } .journal .notInJournal { display: none; } ol#references.useLabel { display: block; list-style: none; } #references .refLabel { float: left; width: 2em; margin-left: -2.5em; font-weight: normal; text-align: right; } .NLM_fn .NLM_fn-symbol { float: left; } .federation select { width: auto; } .federation label { display: none; } #emailPageConfirm { margin: 0 0.5em; padding: 1em 1em 10em 1em; background: #fff; border: 1px solid #b6b6e1; font-size: smaller; } #citedBy p.articleBody_abstractText { width: auto; } .NLM_inline-graphic img { vertical-align: middle; } .IN_LIST-title { font-style: italic; display: block; margin: 1em 0 1em -2.5em; } .graphic_meta .NLM_permissions { margin: 0 0 1.5em; } ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=body-bg.gif Content-Type: image/gif; name=body-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/body-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQCbANUAAA9Ngh5zs////+fw6/z9/Ozz7/3+/ujx7Pb59/L29Ory7vP4 9e308Pz+/ff6+Pb6+Ojw6/v8/PT59vT49vf6+fn7++3z7/r7+vL39e/18e307/3+ /eny7fr8/Pr8++vy7/39/Pn7+fj6+fD18/T39eny7Onx7P/+/vX59/n8+v7//u70 8fH28+/08ury7fD28+jw7PD18v/+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAJsAAAZMwIBwSCwWAcikcslsOp/Q p2BAHUBgh4OpxHEpFJ+C2KJhMFatTOw1YiUSmAVpMZGgEIiHgyIKpS4VHh0RBIUg DRsGBionAjICkJECQQA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=navbar-bg.gif Content-Type: image/gif; name=navbar-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/navbar-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMeAOYAABw/lEllqaKw0zBMlEFdoR8/lENfoylFlDdTlyxIlD5anh0/ lDNPlCZClCI/lEZipjpWmkhkqIeZxlt0sTRTn/////X3+qe11sLL4qm21k1oq/Hz +KWy1Ky42PDy+FlysL7I4MDJ4aa01cHK4VBpp2Z+t5WlzUdgn1Rtq0JfpjxVnzZT n2R8tjpYopmoz0xmpIOWxH2Rwpqpz0pjokpmqVZwrj5YnyJEl4qcyIudyGB4tFhx sERen1Vvrp+t0kFanzlTn1JsqmN7tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAx4AAAf/gBUWGB0ChoeIiYqLjI2O j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsIYcIBYVGxmxubq7vL2+ v8DBwsPExcbHyMmlFx4jhzBCE9LT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u 7/Dx8vP09fb3+Pn6+/olOYchLhiKEaCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rc yLGjx48gQ4ocSbKkyZMoU6pcybKly5cBaOAwJOJQD5g4c+rcybOnz59AgwodSrSo 0aNIQbJQlLSp06dQo0qdSrWq1atYs178wFSr169gw4odS7as2bNoC3JNFKGt27dw /+PKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLbnco esC5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068 uPHONRQZWM68ufPn0KNLn069uvXr2LNr3869u/fv4MOLH0++vPnz6NOrX8++vfv3 8OPLn0+/PnMUigjo38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGF GGao4YYcdujhhyCGKOKIJO4XhCIKpKjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo 449ABinkkEQWaeSRSCap5P+STDbp5JNQRinllCqSoAgEWGap5ZZcdunll2CGKeaY ZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABipoli8ogsChiCaq 6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quw xoroDIowYOutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0EYr7bTUVmvt tdhmq+223Hbr7bfg3nqCIgOUa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz2 6++/AAcs8MAEF2zwwQgnrPDCDDfs8MPm8qBIAhRXbPH/xRhnrPHGHHfs8ccghyzy yCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37HPFPyhywNBEF2300Ugn rfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my3TbQN ijQg99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu +eWYZ6755pzPrYIiDoQu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++68 9+7778AHL/zwxBdv/PHIJ6/88qIDoUgB0Ecv/fTUV2/99dhnr/323Hfv/ffghy/+ //jkl2/++einr/767Lfv/vvwxy///PTXb//9+Oevf/QrKLLA/wAMoAAHSMACGvCA CEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTCEA KaAIALjwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQm OvGJUIyiFKdIxSpa8YpYfCELE5HFLnrxi2AMoxjHSMYymvGMaEyjGtfIxjYqcYuI cKMc50jHOtrxjnjMox73yMc++hGIcDzEDf5IyEIa8pCITKQiF8nIRjrShS04hEAE oIFHWvKSmMykJjfJyU56En2NOqCJMwTgghR88pSoTKUqV8nKVrrSjRrwgSFCcItD mEACuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rY zKY2t8nNbnrzm+AMJzhlIEkPCIIQykinOtfJzna6853wjKc850nPel5iFrUIBAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=profile.png Content-Type: image/png; name=profile.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/profile.png Content-Transfer-Encoding: Base64 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 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=searchbox-tl.png Content-Type: image/png; name=searchbox-tl.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-tl.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAu8AAAAGCAIAAAD8NedlAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABuSURBVHja 7NY7DoJAGIVRHxNCiDiBDhOpbAwFLaUbcAFU7INyCrfk9nQbf3JOdetbfcf8LkNf lW1cnu1/HAAAQkmPW/39TN0l+QIAiOi0r3cpAwAErpnXnL0AAASumWtz9gIAELhm XAAAhPYTYAAhpAY0mZCHegAAAABJRU5ErkJggg== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=searchbox-tr.png Content-Type: image/png; name=searchbox-tr.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-tr.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAIAAABvrngfAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAA6SURBVHja Yvz9cycDA8Pzd79OXP9ct/ARkMEIEYKA91/++NRcQxECgq0n36MLff3xF10ICLAI AQQYAIPFJBrAbKl6AAAAAElFTkSuQmCC ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=searchbox-bl.png Content-Type: image/png; name=searchbox-bl.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-bl.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAySURBVHja Yvz9c+d/BiyAiQEHAEl8xCWxD5dEDRC/w5BgYXO7BqT1gHgNEL+ASQAEGAAazwm5 lpqbDAAAAABJRU5ErkJggg== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=searchbox-br.png Content-Type: image/png; name=searchbox-br.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-br.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAvSURBVHja Yvz9c+d/BiyAiQEHwCXxBZfEbmwS74C4BlniBRCvAWI9Fja3awABBgDMVwm5JPxs +QAAAABJRU5ErkJggg== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=topright.gif Content-Type: image/gif; name=topright.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/topright.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAJEAAP///+72/PH4/fP4/SH5BAAAAAAALAAAAAADAAMAAAIFFBCD IQUAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=topleft.gif Content-Type: image/gif; name=topleft.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/topleft.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAJEAAP///+72/PH4/fP4/SH5BAAAAAAALAAAAAADAAMAAAIFBAQT ElEAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=bullet1-trans.gif Content-Type: image/gif; name=bullet1-trans.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/bullet1-trans.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAJAIABAFpyq////yH5BAEAAAEALAAAAAAFAAkAAAIKjI8QasoLXUT0 FAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=bullet1-white-trans.gif Content-Type: image/gif; name=bullet1-white-trans.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/bullet1-white-trans.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAJAIABAP///////yH5BAEAAAEALAAAAAAFAAkAAAIKjI8QasoLXUT0 FAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=go.png Content-Type: image/png; name=go.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/go.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJhSURBVHja Yrz47BtD34q9nWyszE6///zV/Pf/PxsDA8M/BvIBEyMD4x+geXeA5u0tDHcuZIzr 3dT2n4GhIsTRkFFckI+BhZmJ4f///2TbwMjIyPD33z+GNx++MGw4fPHrr99/Z7Kw s7FoOxmrMypICDNQC7AyMDPIiAkyeFvpcm89dtmGCSgmz8vJwUALIMjLBfTVf0UW IJsZ6EMM8P79J4ZjR88xPH/+GszX0lJmsLI2gsv/+PGT4dzZqwzXrt2FyxsZazNw cLDD1UCD/T/IJxgRADJ4yqTFYEvABn7/wbB1ywGggXfgFsyZtQosBpKDyXd3zgHL oQMWdAGYASCQkxfLICkpCmbfv/eYQVFJFsyG+dDbxwHuO5Cv1q7ZCbYsOMQdNbmh W3IPaBjIImsbI7gFIACzAGagIDAlIgcfKKhAYiDHEPTJC2gcKCrKoBj64cMnMNvJ 2RIcX8iWwoCAID9WS5iISSWgoAFZtHfPcfJyJ7qABDSIzp27BhcDhT0oOGAAFIzo LgYFMUgMOYhxWqKlpQIOW5DLQREMSy2gIIKr0VYB06CIhlkAinAQQI4nnHECAtGx /gxLF28Ea4RphvkAFi/37j0BOwSEkSMf2cfIljAxoOVGkGGg5Hvt6h14hIMSAnJk p6SGgvMNLKFoAkMAPagYIeYysgAz5YPP335gWA/KudhchR60IIwLfP76g4GZifEZ E7A4vrr71PVvr95/pmq59f7zN4ZtJ658+vP332FGUH3Sv3LvBBZmZn9gES3BxsL8 G+g7RvKLeob/QIezABmfgYXX+vwwpwyAAAMAJ6IYX4xomfkAAAAASUVORK5CYII= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=citFndOr.png Content-Type: image/png; name=citFndOr.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/citFndOr.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAKIAAAAOCAYAAACsLMeOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEbSURBVHja 7JfbCcJAEEV3xX/twJSQEmIHWoGmAtOBpgKxgmgFxgq0A7UCtwPTQZyFGwhLXmhE hHvgko/d/AyHmR2d57ki5Ndoikgo4v8xkywkY8lNEksynPmSbemuPd9JDMvWzoAl 6EwE0Q4Q0JM88FWQM5BcECvtmWVjR+wTK9lTMoVkBUd0xBASWvF0yz+EHfGjkWwq hDpBwCYylq+doYQtsWFi4DupeeuZ0mguWOO7lOzxVixgrRtE1CzD1zpoWCM24Wh+ i3vNCPadjqewyMxxP2DpKGKfpHjrRc4Cs8JZ1cjeSBLcI9yaex23CcQzeAMabMWq Zmu+4p0Ys3wUsU88CDnCuE6dDuk7m7WHXFg6ikgoIiHdeAkwAA2CSoIrypEiAAAA AElFTkSuQmCC ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=info.png Content-Type: image/png; name=info.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/info.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAADIAAAASCAYAAAAZk42HAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKESURBVHja Yvz//z8DMpi95hIXkPIBYkcgNgNiFajUHSA+BcT7gXhLaojeN4ZBBBiRPQL0hCuQ Snv99kvIjbuvGF68+cwAZDOwMDMxCAlyMchKCjDoqEkycHOxrQGqmwX0zO5B5xGg JyJ///lbe/jUPU2QJ3ABNlZmBntzZQZVRdFrQG4L0DPLB41HQDEB9MTEzXuuar54 /ZkojZoq4gyOliogzxQMhphhguaJNFBMYPOElBgvg7qiCIb49TsvGS7deKYF0gs1 AwN8//btP7EOAaklRT2GR0AZG5Yn0EFJsjXD1tkxDCsmhGL1zOlLjxl+/vwTAi0c yAYgD3BycTGCMLlmsIBKJ1DoYgMHTt5n+Pz1J8PZK88Ybt5/gyEP9ATD7YdvgAWA BKiEW4UuT4nDyIkRs8fPP2CV5OVhB8dEX5UHg4mOFFY1z15+ZIAW03iTCoyPTRxX 0sKmHl+MqIBCHRtQUxBmcLRQxGvA12+/GJDqGpTYQHcAcgwhJycYG1tyw8XHFiMM TIzY5UFJimCxx8g4GEpfsEfuCPBz4kxa2NjIgA8ifmcweOSUnJQgVklfR3WsbGQA qu2hTZcBBaA8sl9LVTzjwrWnDP/+oeap+kn7GZZtvgRm37z/FkMzDzc7g7I8uFje T22HoecxQiUgKEa28PFwrDHRlcWQBBUCZ4D5BISxFQigpgoTEyOo3bUFl2NwOQSf HLI4sfULE7QVO8tET/aahrIY0SFmY6rIIC8teA3aeBzwljBKoxFI1Vy++Vzr5PmH DL9+/8WqAZSc7MyUGBRkhAZfoxG9GQ9qdtx99Ibh6ctPDB8+fQfLiQhyM4AKBUVZ IVhyGpzN+KHesQIIMADnKECt08LozAAAAABJRU5ErkJggg== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=journals-bg.jpg Content-Type: image/jpeg; name=journals-bg.jpg Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/journals-bg.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+IMWElDQ19Q Uk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNz cE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3By dAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZ WgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1k ZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVh cwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRS QwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNr YXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA AAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFla IAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABi mQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0 cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVz YwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2Ug LSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv dXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA LFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAA AAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYt Mi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAE AAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0A cgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA 6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwB gwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkEC SwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGME cQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF 1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EH dAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJ TwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1EL aQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN ww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQ YRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMT QxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkW bBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ 3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAd mR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl 9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1Kmgq myrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ40 2DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6 dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNA ZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG q0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJN Sk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZU QlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb lVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj Q2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdr T2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11z uHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8 gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeF q4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6P No+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZ JJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowaj dqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5 SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHE zsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3Ird EN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp 0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32 +/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4ADkFkb2JlAGTAAAAA Af/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcH BgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwM DAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgDDAG0 AwERAAIRAQMRAf/EAIMAAQEBAQEBAQEAAAAAAAAAAAABAgMEBQYJAQEBAQEAAAAA AAAAAAAAAAAAAQIEEAABAwEEBggFAgQGAgMBAQABABECAyExQRJRYXEiMkKBscHR UhMjBPCRYjNDoeHxgrJTcpKiwmNzJAXSkxRUdBEBAQAAAAAAAAAAAAAAAAAAABH/ 2gAMAwEAAhEDEQA/AP7PMV2uIYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDF AYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoD FAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFBtkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBk 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 EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHn9wY5chDzN sRczcz4Mg+ZJyTmJJlbI+IYSZ/kEGDp2Em/puPSgwbMG0IMILGJlKMRzED5oP0QD AACwXIKgICAgICDSiCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICDjUqiG6N6ZuGAGk6kHiJMnJLvvSkcWxOoYDFBiQJstEncHFz2n9Ag8x2Pq GvAX9CDB+Cgyg9HtY5q9PUXPQg+4gICAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgIPPUrZXjAjMOORujt7kHlOL47xzY/VPVoCCE6Sb N4k36pS16AgwdHQz/MP/AFFBxmMdNhPUfjBBxPyQZQe/2EXnOXhDfP8Agg+qgICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCEiIJJYC8 lB5Z1TJgHhCVxHHL/CMNqDibNERDpjDb4pIIbL7G3jmtb6paToCDN2kN0kE/7j+i DJ6NDXizsH6lBzlo+YPx8FB5jZYgiD63sItSlLxS6kHuQEBAQEBAQEBAQEBAQEBA QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHKdUROSIz1PAO04IPNImZMiRPL fI2U4d5QS295b+PPPZoCDN2gZLHFsYah4pIJd9OW223K+J0yOhBk6GIaxsQ+D+I4 nBBk/wACNWjULhpKDmdnx8dpQeed+1BlB9z2sctCmNIf52oPQgICAgICAgIogICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgzKUYDNIsEHnnUkWd6UTwgcc tgwQcm5Mt9vkxNp1zkgX2vGWTm/HDYMSgN/i3/8APP8A+IQTW4GWwSiHEfpgMTrQ Q2fTkwvyk9cigwxub6coP+kHrKDJfa+I+QI6h80HOXR2fw7NqDzyvQZYoP0UY5Yx j4QB8kGkBAQEBAQEFVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHC VZ3FJpNxVDZEdOKDi/Pmdr/cTu/kCCXWuYZ+Y21J7BggNyZb7fIibTrnJAd7Xicn N+OGwYlBNTS38Oee3QEEJ5nbLuiURYPpgMTrQZNn05bGFuUnAaZHSgydDDw5Xs/w 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 CAgICAgICAgICAgICASwJNwvQfJzEnNeSczf6m+Zig0LNbfrlNnzkUGtIMsCDLUL Zy6TYgukmOgyh/RDtKC/6yJXeOp3RQUat9pWf8lTTsCBYxc545t4i+pPQNQQXxGU mN1aoMPoigtrxAiBMD06eEB4pa0E3cptJpyLGXNVloGpBbc2GeI/kpDvQSxrjkkb Bz1Tr1ILa5LgSiN6fLTGga0GWDRjlLEvCkb5HxT1ID3nMZCRaUxfM+GOpBDi5Yxs lKN0R4I6yghsdxlYMQOUHkGs4oMl3uDuzYOLo7I3lBg4Na9z4vc+027EHKfwfjb+ qDt7GD1JzwiG+aD6qAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOVct RngSGHTYg+YDiL7xtvH6kIOgwy3hsm3hj2lBXDWB42EDTEFoj+Y2oNB3DHecgS+o 8Uv5bkANYxyjKcp8NPGW2SDXT5e7b/x0+8oFrhvTOWz/AI4adpQUcmUMfw0zgPHJ A3WxlAnpqy7kFcvImQE4j1KmFMeGOtBGDRGQsbadHGR8U0DxSz6qtb/bBAY7sRFi LadE3RHimgljEuZRkd6fNUOgakFuckiMohpyF1MeGOtBLmbcyhwDdTjpP1FBm5uR g4e+IN8j9RwQZIwy6Bk0A3R2m8oMm23id3bHA/O4IOMvnpbp/f8ARB9D2cMlHMb5 knowQetAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHk94WpAYmQboc9 iDwx1X8vZ1hBsMbrHuOhwwPREOg2CbCAxJBiNBIaI/ljagu630ZenID1yKDVtuYO XBnHTI8MNgxQX/W0v89TuCBZa++M1v8AyT0bAgpulmLh/VkOaWEI6kFtcvIRkBvz wpx0DWgngAhrpUj/AFzQHDSOYmJLVKovmfDHUgtrswE4jdjy0xpOtBLCMTCZu5qp 16AgEl5EyAIDVKgugPDHWglrgACJiHhA3QHilrQTQwJc5oCXMcZy1DBBHuYu5Mok 4kXzOoYIM7CRFiXxY3y2ywQZOL2Ne2DD/aLNqDmYmREQGJLNoP7diD7EYiMREXRD DoQVAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHg9+WjT/xIPFF7AL8 Dru62Qdgx/w9l5/0gfNBu93LEvmOh7ZnoFiCvjltcEQ1ngj0C0oKHsyyttEZ/wBc +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 H+GXWEHzUHpgQQHuN+zH9AUHcObyxLudDh5HoFiDWk5bN0mH9EO0oLbg0pZrCeap idkUAYZTp8uR/wBVQ9iCjlyWWHynwGMztQdqMBLLNiKcftRN5OMjtQepAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxrw8ylOGJDx 2i5B8FB1pkBwbsfjY6D1C4va3FrYufnIsg3bp3nIEsM3PLoFgQWxvDHL/lp98kDT mDBh5kRgOWmNuKDpCBqSMZaXrnqgNQxQe1AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHwvcw8utMYEuOlBxiWkD80HsiTY3FY2 24fq5QdBlbTBukxBsG2RQatxGaWa0YSqYDZFAALxy7xc+WdMuaZ1DBB7oQEIiIwv Ok6UG0BAQEBAQEBAQEBAQEBAQEBAQEBBUUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBB8739N4wqDDdPTcg+Yg9VMuL2wfQ+PyzIO4JJDDecED6iN3/LG1BbGDEiOU tLEQxltkUHrowYeZINKQaMfDHAIO6AgICAgICAgICAgICAgICAgICAgICAgICAgI CAgICAgICAgICAgICAgICAgICAgICDnWh5lOcNIs24IPz6DrSN4N2J1Y/o6D1i45 rHfORovn2BB3pwM57wsiRKoNfLHoCD2oCAgICAgICAgICAgICAgICAgICAgICAgI CAgICAgICAgICAgICAgICAgICAgICAgICAg+H7qHl1pjCW8OlBxiWkHuxQeyJuJD myzSQbB0yP6IPp04eXARvN8jpJvKDaAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIPB7+DwjUF8Sx2FB8pB9D2gzzicIbx7P 1JQfUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQc6sPMpzh4hZtQfnyCCQbCLwg+n/wCvuqHYOtB9FAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQfE93TyVpN dPeHTeg9X/rzZVGjL2oPooCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgICDw+/g9OMxfAsdhQcf/X8VTYEH1EBAQEBAQEBA QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBipAT hKB5gyD4/tpmlXiDYCcskH20BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQfF95DJWJF094dqD6lCp5tKE8WaW0IOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAg8XvoZqQmL4G3YUHD2FRpSpHm3o7cUH1EBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBmUROJjIOJBig+NKE/a14m8 AvGWkIPtAggEXG0IKgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC AgICAgICAgICAgICAgICAgIOdWlGrAwkNh0FBz9sZCBpT46JynZeEHoQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBw Df8A6C1/l73zsQd0BAQEBAQEBAQEBAQEBAQEBAQEBAQf/9k= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=h2-bg.gif Content-Type: image/gif; name=h2-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/h2-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAdAMQAANbj7fP4/PL3+/H2+9vn8Pf6/t7p8tfk7vX4/fb6/eDr9PH2 +vX5/dnm7/f7/vX6/fj7/vD1+tjk7vb6/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB0AAAUVIOQUU/IwSBAIwrBEikE0 B2DfthQCADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=prevSlide.gif Content-Type: image/gif; name=prevSlide.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/prevSlide.gif Content-Transfer-Encoding: Base64 R0lGODlhGQAkAOYAADMzM+zs7O3t7T09PaioqEBAQKSkpOvr66GhoaCgoJ6enq2t rWFhYaOjo6WlpYGBgTg4ODU1NTc3Ny0tLTk5OZycnKKiounp6aampqurq2lpaZqa mjo6OjIyMqenp+Pj41hYWCcnJygoKE5OTlRUVEFBQTExMUVFRTQ0NJ2dnebm5k9P T0dHR5aWlpSUlIKCglxcXMPDw5ubm3x8fGhoaGNjY8vLy2pqamtra4aGho6Ojl5e XpGRkaysrGBgYHl5edXV1UtLS1JSUp+fn1ZWVpCQkOXl5UZGRo2NjXh4eJiYmLq6 ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAZACQAAAf/gACCg4SFhoeIiYqGJQMF i4oSMw06kIgFNwZLBAUUAwOWgkcMDhkLDjU7DAyhBQweGA4Epgu1lhQ0CQa7DhgE BD0LlkkVBggIFg3KBrOQAzgbDUMJx8gWvpAoISQyCt4K1AiylhATKwoV6SkJuh6h ESYjSgkKPEEnIKzvE0JFBC2hDEEQAQLJi4CGJHTggLChw4cQI0Jq9AiiBBsCPkAs sEHABQGdPgVk8UBAAAECcvx48KDVgwAnTaJEectFTJQxT1qKccAkzJk4naXoCbNo UQHZQvg4YPQoUkjliAQ4QJXpyQDvTJC4AFPFiBMaWu6DYcQjxIEaPgCJqJChxLcI AgMBADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=nextSlide.gif Content-Type: image/gif; name=nextSlide.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/nextSlide.gif Content-Transfer-Encoding: Base64 R0lGODlhGQAkAOYAADMzM+zs7Ovr66GhoT09PaioqEBAQKSkpKCgoKOjo62trZ6e noeHh6WlpWFhYTU1NTc3Nzg4ODk5OS0tLZycnOfn56urq6ampqKiopubmzIyMlhY WEZGRkFBQTo6Om1tbScnJ6enp+rq6igoKDExMTQ0NJCQkHx8fE9PT0VFRUtLS42N jdnZ2WhoaOXl5Wtra1BQUKysrOTk5IKCgnh4eIyMjFdXV5iYmF9fX8jIyGNjY2Rk ZF5eXkhISJqamrq6umpqao6Ojp2dnVRUVJGRkX5+fp+fn5aWltDQ0FJSUllZWU5O TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAZACQAAAf/gACCg4SFhoeIiYqGBgQd i4tBCScQkIUEBBIGBT8HQAaWgw4OPDoNChYNDhyhAAqvqAUNFyEOoJYKMQUFFw0H vwgtEpYWBQcJyBgDAwcUNJa8GMrLCEYJPi8EkLLUC94LGUMgJZAhBwgIQhTrCygT EZYOGykqRAsIN0skD62DRwUmkkzg10/QjBUbRsArOMiDhkoMI0qcSFFio0cTXQRA ArEVJk0BKgQYcCsUAwZFagQQICAAgx6tWMoMQFMAg5KLWNLcuTPDMEgtefIUkMOS UKECEmhbdHSngB3jgDqdqeSdJQYfOMAQGUCEjX0MRYTEMTAiCxkfFE502LGiW0WB AQAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=highlightPlay.gif Content-Type: image/gif; name=highlightPlay.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/highlightPlay.gif Content-Transfer-Encoding: Base64 R0lGODlhIwAkAPcAAF9eXYiIiLS0tNzc3CoqKquqqn9+fqChoJSUlE1NTcDAwL6/ vjQ0NK+wr9TV1GRlZGlpaZqbmpKSkqenpkxLS3d1dcTExNfX19LT04OCgu7u7pKQ kMjJyHx8fNra2tjY2Lm6upeXlicmJoaHhpCQkFFQUMfHx0JDQmtpaaOioh4dHZyd nGJhYVBQUEpLSs/Oz46Pjpqbnrq7uy0sLHJycmZlZZKPkq2srHp4eBoZGVtaWhYV FZeXlEZGRlRUVJSSkkBBQFJTUo6NjTo5OT8+PyMiIjc2NoiGhoWFhbi5uEpJSTg4 OEZERKmqqXd3dnV1dVxaWm9vbzAwMCUkJJGSkWdmZjs6OkRFRFBOTkJAQD48PHh5 eGtqamJjYoB/f0lISEdHSERDQy8uLj07O0A/PzMzM5ucm1dVVYGAgLGwsNDR0JOU k6WkpMnKya6vrjg3N729vVhWVmBeXpmamYmKidDQ0FZUVJ6fnsvLy7O0s7W2tYyN jFtZWcPDw6eopyYlJcrLytHR0crKyqSlpP39/c3Ozaeqq6WmpbKzsq+urqqrqq2u rbGxsfDw8HBuburq6o+Qj+Pj48vMy7a1tbe2tpqXmvb19nl3d6inp52enXt8e+Tk 5J+gn21sbGdoZ/v7+2VmZbCxsL28vFlaWcLDw/z8/Pz8/cHCwcLBwYOEg3+Af6al pZyamr2+vUNEQ3N0c7Szszc4N+jo5xgXF6SjozU1NZCOjoKBgZiXl8vNzEpHRePk 4peYl7/Av359fdjY15aVlayqrKipqKusqqupq3VzcysqKszLzDIyMjIzMjMyMicn J7m6uZmYmLu8u7i3t8/Qz1dXV4uKimhmZtnb2/Dy8/Py8oyLi0FBQZqYmIWGhCAg IKGjoEdIR+/w8MzNzEJCRENERObm5VVTU7y8vNbW1by9vD49PUVFRurr7DAvL3p6 efj4+DQzM25wb1lYWDs7PFNRUN3d3Tw8PDw7PGBhYOXm5iQjI8LCwjk3OcLDwjIx MS0tLfv7/C8sL3t6eiH5BAAAAAAALAAAAAAjACQAAAj/AMsIHEiwoMGDCA8m6BAA SYZbaCJKlOjF1zoaJRgkHLgklQkLrZ7BSkOypMlEBdjgOgIB3sYyXhSgEiXgBiY2 EwpMYMOzZ4oDrITgqFGiVkIKjChRSpQiGwIE1uwVYPVjg1Wrtq4ZgGBHCb2EEFZh otUsQIdLTj71S1dOAhocFeLG5XLGBRkjCTuFACbEQCcWcgAQsqRBHAZn6yCwACBH zhkKWYzwS1hF2hEDjuTEOXOm0aNN8i4cA8HtAYAzcUr0sCJFREIWGbxcQgGF85lI oevgsSCjibYa786UCPNmRpGEADr8KzatNucLgQRZgDPJkA1dWWqXOFGLwLaEOio8 /3H0gI9tPH3g6GkCzBW9dprtJCCz74+KhD5QQKgRnzN1RZWAcw4DLPARhx3xfDGE MSrMkpALcYwTDxYUVJgAMTEQMQYDfJRQIQVKMLGgCjvskNA5FPSAjRZDvPHGEGAw 4I8S57joohEMiDFFDiXehxADRAyhzAzL/DHFFMaoM8ORTN5TxDY8lrjDDBsxoI59 UUqp5ZZa/vFSGcgskyWXZOagApVfpqnmmmymGUQAeyGwxpx01ikBFTDQIYdRLw1B gjwDeOAABoGoYeihh0JTSBv4JBFCDy9B4sEAH2DwgiSCAPINIG106ikHH5ETyiB7 DJFQEHU44EAdHPShgALseP9TiAW9LGDrAq3AIUMeE8wxgg4JdQCIJBzowwwiDbhR iinV7NKKAMm6Ie0ifkQwwisAJDTCKaiYk4cwPx0wmDeyUJOLG4dwcsC6ZgTwRBdB JJSBDEnkocgBK5hhhmeg/fICKQ2YwYm+EhjARTSQIqSKHtD6cYe+ZuB2gW68DUPF HPlSockDLZCRkAGIMLLIIQ/rC5101FkXDxQrRADJFvW4YCpCmrixiCKDZAIxeuop wkM36ITx8Bx70DBKGMkktIUfEwxygBkRRGDGf5WA8UU4d2QSwRwIpOJJArEQkFAU ZvCCQJ4BBEBHMDFgw0Q4MOxBBx0NdQBBAkYsswx+ARhT4EQUnjzwACgJwJOPOxAI LngXAPhwAj96i41QLRB4okMLX4Rxwgk9uAAGNqCDDgQZVuyjt95SbDRPCVe8Afnp sMce+2QvMdCd7LjDbkzqbfZeUEAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=highlightPause.gif Content-Type: image/gif; name=highlightPause.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/highlightPause.gif Content-Transfer-Encoding: Base64 R0lGODlhIwAkAPcAAEJCQqanpqOioh4dHVFQUF9fXtPT01NRURoaGru7uywsLEFB QU5OTWtpaXJycq2srEtKSltaWhYVFVRUVFJTUo+Pj46NjSMiIjc2NoiHh7i5uLW0 tGZkZCUkJDo5OXp4eDg4OEdFRXd3dnV1dSsqKm9vbzAwMBkZGWdmZjs6OlBOTj8+ PmtqaigoKGJjYoF/f2NhYUJAQD49PUtJSUlISC8vL0A/PzMzMycnJ1dVVZucm6Wk pLGwsMnKyYGAgNDR0Dg3N////2RlZJOUk66vrqChoHd1db6/vmBeXk1LS4mKiZqb moiIiDU1NVhWVpKQkDQ0NFZUVLGxseTk5MHBwb+/v5KSktnZ2bO0s15cXMrKypma mSYlJaSlpLy8vNjY2Keop8nJydvb20xLS2lpab29vc7OzoiJiH9+fp+gn5SVlKqr qvz8/K+uroyNjLe2tr6+vq+vr9DQ0PPz883NzW1sbHBubp6fnvLy8sDAwH5/fpaW lrKzsoSEhIOCgnl5eXx8fGloaHt8e4+Qj7Ozs66urq+wr+fn56SkpNbW1svMy3l3 d6GhoX18fGdoZ+np6ZOTk+/v78jJyKinp0ZGRkxKSq2urVxaWl9dXYaHhri3t728 vMHCwXh5eJSUlEVDQ1tZWbSzs8LDwpCQkMfHx6uqqjY1NSgnJ5aVldXV1TIyMjIz MpiXl5mYmIuKipqYmLm6ubCxsJGRkVVTU5COjt3e3VdXV6SjoyAgIMPEw7W2tZeY l5KRkTMyMsLBwX+Af5GSkc/Qz9HR0Tc4N7y9vMTExKalpTIxMXt6eoKBgaipqDU0 NKGgoImJic3OzYyLi4mIiJydnJ2enZKTkpOSknVzczw8PHN0cxgXF2BhYH5+fn9/ fyopKdra2kRFRGhmZpaXljw7O5eXl5eWlpWUlJWVlVlaWdzc3NTU1NTV1GRkZHZ0 dJuamsLCwsPDw4WEhIWFhYKDgoODgyQjI3h4eIOEg359fXx9fC0tLScmJoaGhoeG hqWmpZGQkMrLymVkZCH5BAAAAAAALAAAAAAjACQAAAj/AG8IHEiwoMGDCA8yAJTh nZ9kPiJKlPjC3h8HBKAkHAhCHqlicDSF4kGypMk2pXaw2hco3MYb2/L42rThwaQd OHPqFMCMnYUPHAg0SThGyps3bQS8IkeNV5AgT57geRS1H61naAJFmeESIRljk261 gtZokQgjT08YmSJGrREj61jkgGADQ8I641BZQFMHBhJMWdjMQZDlixnCmJAgyTEm BgZ8CVG42ofGDhInOTJHOnQihxYqCDLncEIgRAoT+RLC8PNiUYNLonNMuRK6DKHO ogl8AqLgQkIkjZBV+wZbdCI6nePww52ZAABT3HAljADXzj9QscNUCc1oT+jMURjY /zjGZUDCCQ0CobgcRbQXKaGtMMEd5QANDyQGYEsIwcmsAyokUckYSSRRCCInJNHH HwgIOEMI+A0ggQQJyTBGCAvI4AEQHHKIAAIegojBMjV0cMKE5iEExQoe9KLAKVx0 IOOMNM5zAS4ITDihAhtBUUN5J+oo5JBDcvHSDargkCORTE54wgA8HinllFRWKSUF TIhTjidDdOlll5BAYoUsFTRTwFAveTBKLedckYoBwvwg55xzBuNMD+1oAA4lLw3S jRhfGGCGIlr0YOihh0pCSi5exNKFGx4kRIEc6aAjhyTu5FHFEU8dccRUnsJRRgJY BLBFJhEkBIg/ioQhCix8GP9CBBFpEcHWCbMSYQkYS2RyTQEJ6cMJFcRgoYwARRSR hmAIpGFYs8kWocMZI7hAQULxJKABFmsUEY0O4G52gg6fIQAuuNPowYItfCL0iy4b GALGHefqMJu5to17LjCCCEGADQlpw4cUlvBD77nHjaucvjosMUgn2UAQKUKC6LpG F9LUq5253ZkL7hZuOGAOAKskRA8YAXQh7RJLgPueufKNu8QWatTjCAPDkJBQCTrs okYFSjBxhhJKHHiCEgsiEDQ895DBAAY4tHDeGXqIUIIjQmSd9YdbI6COCwVMAAA+ OOCgM0JNkOFIBATQAMDbC8Qtt9w2pHBM2WWbsJE1BHgbAwTZeAcuuOCQvQRFE9wM rjjeLZCgt5WQFxQQADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=articleView-tabs-bg.gif Content-Type: image/gif; name=articleView-tabs-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleView-tabs-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMdAMQAAPP5/fT5/dHm9vj7/tfq+Pj8/tPn99Ln9tbp+Nrr+fT6/djq +NXo97a24c/k9dTo9/X6/vX6//j8//X6/c/l9dDl9vb6/vf7/vb7/gAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAx0AAAX/YCSOZGmeaKqubOu+cCzP dG3feK7vfO//wKBwSCwaj8ikcslUSZ7QqHRKrVqv2Kx2y+16v+CweEwum8/otHrN brvf8Lh8Tq/b7/j8tcDv+/+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2e n6ChoqOkpaaEA6mqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3O z9DR0tPU1dbX2Nna29zd3t/g4eLj5OXWF+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+ /wADChxIsKDBgwgTKlzIsKHDhxAjSoSHoaLFixgzatzIsaPHjyBDihxJsqTJkyhT /6pcybKly5cwY8qcSbOmzZs4c+rcybOnz58dLQgdSrSo0aNIkypdyrSp06dQo0qd SrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy1YphLdw48qdS7eu3bt48+rdy7ev 37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM9+dwLmz58+gQ4seTbq06dOo U6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry4cdIKkitfzry58+fQo0uf Tr269evYs2vfzr279+/gw4sfT768+fPo06tfz769+/fw48ufHz2A/fv48+vfz7+/ //8ABijggAQWaOCBCCao4P+CDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKI JJZo4okopqjiiiy26OKLMMYo44gA1GjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap 5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptw xilmAnTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrp pZhmqummnHbqKZ8LhCrqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz2 6uuvwAYr7LDEFmvsscgmq+yyqRLg7LPQRivttNRWa+3/tdhmq+223Hbr7bfghivu uOSWa+656Kar7rrstuvuu/DGK++89NZr7734WovAvvz26++/AAcs8MAEF2zwwQgn rPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJc8MAMop6zyyiy37PLL MMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLTXMD1Rt 9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet9958 9+33310bIPjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy76 /+ikl2766ainrvrqrCt+wOuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHI J6/88sw37/zz0Ecv/fTUV2/99dhnf7sA3Hfv/ffghy/++OSXb/756Kev/vrst+/+ +/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQn SMEKWvCCGExgBTbIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra 8IY4zKEOd8jDHvrwh0AMohCHSMQijpACSEyiEpfIxCY68YlQjKIUp0jFKlrxiljM oha3yMUuevGLYAyjGMdIxpIymvGMaEyjGtfIxja68Y1wjKMcoeiAOtrxjnjMox73 yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU56 8pN9bIAoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvryl8AM pjCHScxiGvOYyEymMpfJTFWGAAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=articleView-tabs.gif Content-Type: image/gif; name=articleView-tabs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleView-tabs.gif Content-Transfer-Encoding: Base64 R0lGODlh6ANPAPcAAP////v75e71+/j7/tHm9vP5/fT5/ba24fX6/tDl9trr+c/k 9fb6/tjq+NXo9/f7/vX6/dfq+NPn99bp+PT6/dTo99Ln9vb7/s/l9TVnmPj8//j8 /vX6/2aNsmqOrWuQs5+2waG4z5izzb3P4cnW5MbU0IakwYSit3+gwFB7pk56pU97 otXi7uHn2+Tr8aS8067C1qzAxl2Fp1qDrF2FrUJxnUFwn0Jxn9Pd1tfh6snZ5+7x 4OLs9PL1+HiauneYsnOWube34ZGsvJOuyIupxs3O67zM3bDG2vH0+7nKy7295Lq6 47m54f7+/u30+vv75rm54ri44bi54u/x+MfI6cjJ6e3w+cDA4e7w7u7w+vz86rq6 4by847+/4v3+/ufr8u3z+r294uzw+cvN68jJ5cPE5enr7Pv75/z86eXr9Ly84vv7 6O/x+ebr9e/x7tTY7uDj7/39/ubq9NPW7P398rq84uXn7drb7/X26e3w+ubr9sPD 5Ovu8e7w99TX7drb8NPX7t7f88HB5Nja7f398be54t7h78vM6r/A5AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoA08AAAj/ADkIHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMlSoYaXMGPKnEmzps2b OHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLPe3MC1q9evYMOK HUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sGGyAxIrXsy4 sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnm0ZSREl B6IEOcC7t+/fwIMLH068uPHeSoogYWwbt+7j0KNLnw48+fLFzXPvps69u3fe1pnf /9b+vbx54+Gxj39+vr178Mppy59Pv779+/jz6y/9oP+DPEtA4UcbAhRo4IEIJqjg ggw26OCDB8oBCBRLiOEfgAISCOGGHHboYYISUmhhfxgO+OGJKKYY4YQVXhigiSrG KOODIbZI4osazqjjjgXWOKJ/QAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWV WGap5ZZZXuDlBVUUkgYYPJa5oxN6SEHFl2GOaeabMaKpJptikgnnnR/KuaaXbdqJ 558Q6kmnm4AW2qCgXyaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qik jsrAqQwEMYcThrbKoBNvBP+BqqqsumrrgbDKeiqtt/YqQK6zrurrrcDuKuywrhaL 6rLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmsuuQiki8AByPp6gLrs tnvru+nGK6+r9K57r6352rtvofmqK/DABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zx xRhnrPHGHHesMQQgQ+Dvv38eEPLIJN9pMsgop/zmyiK7DCjMLcvMI8wh56zzzjz3 7PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRHTcHVFARhM54HYK311nB2ffXX YJspdtZlv+x12mZj7fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744Ygn nrgBjBtQM9spHtD445CfKDnjlFfu4eWOa64j55l7viHnjZdu+umop6766qy37vrr sMcu++y012777bjnrvvuvPfu++/ABx+66A+CTnyMxh8f+eTKL4958yiSHvz01Fdv /fXYZ6/99tx37/3uBYRfAOUiZKAiDzP0ykIGLyx4gPiPl59iBxnUT8SCKHSAYAco FMg/gusbwYbW174EvS98lOMBEOo3AxYYSgQq4Br8TiQCERgogimqn/0+pIL+bW6C HqrgBWNUvgyoQIAQ7NALMuBADh1QfDCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ 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 xZnEJRvHfVzIjVzJnVzKrVzLvVzMzVyxCQgAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=rssbox.gif Content-Type: image/gif; name=rssbox.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/rssbox.gif Content-Transfer-Encoding: Base64 R0lGODlhXAAdAPcAAPT5/f///9Dl9hw/lOjy+/P5/fD3/NHl9t7t+fL4/enz+9nq +NPn99Tn9///7+fy+9vr+P///vH3/NXo99zr+P+QYf//tv9tI/+CHP+BHP++afxa HP9/Pf/Div93Iv+3X/+pdf/npP+MHuRuMP6QPf+zQv9sGf9cIv9/I/++a/6mOf+M N/hPIv//0f+WKP9qGeh4LPxpGv+UI/98MP+RI/h9NftQGf+mRv+UWP///P/IiOFi LPuWL/+UJf+bRuhfFf+DCf96HP90Kf+tW/+/Uv+QKv/GdOVgEf+6hv+RIv+JIP9z Kv+VJv+XKv+CJv9ZFv92Gv90Jf99Gf/+yv9vF//Cgv9qJv96O//Aaf+RGP+JQf+X PP+EKf+UH//Gg/9GJv9zMv//yP+XI/V0Rf/Ojv+ZOf+RFf94Mv+KSP+LGf//5P+k Pv/xwP+QHP+JIf+OJv91G9Lm9v9jG/9sFP5jMPNpH/+zXP96H/+vev+BKfxcEv90 F///8eqMH/ZfFv9yKf9+LP9aFP+DN/9oF/+DH//Osv9+KfxRGf+DKP+6aP+KHv+V Mf9oHP/AZP5hHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABcAB0AAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKjFgAwQQBGDNq3Mixo8ePIEOKnICgwEEFCwgYAMCypcuXMGPKnEmzpk0D BBYoKFjgwEqbQIMKHVrTwAEABCEQIMq0qVOaDygQZJDgqdWrTBMwICgAq9evNQVw BUu2LEuxA7uaXYsVrUC1MqeAoSMECiIUS2ikEdSCLVu3AeDGPBNoDYY6eYCI6SGD C4mZAyIPcCm5ZWWYkZtOlglYMMwnYwYWEmEmC5MmUiBbZrl5tczWTGG/7EzTkBw8 OtgIBNGGkBInqlkLpxxc80zaM/tQqZJokRGBdjzs+VN8s2zZli9fZp05e/eYyGUG 89ESIUCEFCVyOEBj4gLk7QC+x8ce33X9+/db0z87dmaUOWV4IRAWQwTQgSODBIfd dZh5151kD9oHU3gxufDGB0T4wIcaNTgQxg4xKNggcS/pNyKJ+E3Yn0xdJCGQBo0E gAMZAWygR3Ul5qgjfta5ZiJnK8bEQwYCbaFCAEhUEMAMXxRX33bwSQjflFG6RCFM K7hRhCIcvMDIET/YcMgJfq115Ush3ADIHVfAYcUIfrAAgwVlmnVmnXgeN1VVefYp UwJxJLWUn4S6FBVBPf1UqJ9GIUUQSgRIsCieEuS0k0EVNSDSppx26qlHDZQ00aik lupQQAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=viewAbs.png Content-Type: image/png; name=viewAbs.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/viewAbs.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFUAAAASCAYAAAAqqJKOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPoSURBVHja 7JhPSFRRFMavKYbikDSijDgkBEqSKAmBEhgKQaArMWilEBS1i3bhMtpVixZRBNmm wGilq6BIEIXAEAzCgcgYUQoHBENREDu/M+9Md2ySsZlcvQOPe+e+e8+f73zn3Jkp 2d3ddaEUV0p8UK89mW2R4aw85SE0B5IFeT48vtqxmQWqAPpMhuEQn4KAvSjAfj0S ADocAlqwNMvzkMmRYOHcQU431UcOzVNsHaa9AqXbB7XCfzMycMpdv3Aya/eD4XZ3 qTOuAd7qa/ovgfa21urji9qKVeV1vrK8VM/Ho5VF86mrKeraG6vz3V7lg5ol7+Z/ qCKcRGz+9tN3l1hed/cmEjoWHdTTdfr8qzTUVGriK46WFs2nofONriFacaAzZbkW 5xbX3JCMnc1R91YA7pRsJVMbLrW+7aQR6x4Dtq8jJuyoU9A59/z9oqzV69mbo3O6 9+7lVtm/oOepgGik3N15/TnLps8G5uj6zZYa1y86OT8xu+ymEymtlOHuRtXFOvph tbEb38Y/rmTm7CcWqwgEPa+mk25je0dtEgss5/OjN19c/5mY7sM2z+2X82oTXewh Vt9Pk5xM5QAGAROwMPgucGhsJplVGhjDMZwgQECD0ZzjPU6yjg4bTVc2S2vVQR7m vpBQkriwsq7MQacFzDpAA6z5xjg2s5Q5D3Nt34zExRxArLTN73RyEgL+d7e0upHR MR2cAQ8AJVbO41feTEUw3iVZHuyKK8iWkWRqM7MHI7xjTPe0Mg0Y5zDIeoPst3lF 0E72ZpegcHZ0clF19EpPNwYaqLCNByDaGo9J4n4owCQAX33fkoFN6/uAY+2qR85a ZSHHxU5nJO0/QBGP7d0IQEutb+kaI1UDo7GZi6X7gppWsq1BkCmM5ZLNrR0ts1x9 maCjkaNBaTarQ7l0WR+lTfhrflXYRaQ2gyQnXsxrm4FlALL6c3vfXqcMl8qiDcx9 W8u0i3wFPGgBsDvdayvVbt6gpmm/qk4YE/YKbCEg2AIzmmMRLRNj46AET3ZxJqNr MvUHUNa7CVR76olqXaNc/X7LSEJmFlI6b4pFskp8M7WTaSXoMH17hSrwq4t2BXtH BlrUT8CfmF3RmKzfIktSAW0yJyY/yQcCFTAx4N/0MJPPNtJfcBBAKTsM4QiP9qag JHPpshub/kVgVu44HZcbl3ckxxKGfuwZ0+PBrTwu4NslxJy9ToDzfbU2Yu/RQSU0 BO3q/njC9cgFxjuf8TCRJLG+FMRXI3P84i75629/+UX1VOZXwh9FBctP+XYUsdt/ KsSjKDKV+Uol6I7KMBpiUvAfKjfCv/7+919/oRRPfgkwAB2uXl9RhoJzAAAAAElF TkSuQmCC ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=downCit.png Content-Type: image/png; name=downCit.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/downCit.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAGwAAAASCAYAAAC+Tjt8AAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAT5SURBVHja 7JlfaFt1FMd/bdPUhsUVEzYzOi0ILQ6Dw4LQIUwsCEL7VBzoiwXBoW/qm+6hgvrm kw/iEOxeFFbEh+5lQsaGI4FhJaWdo5FhS+LalEbTJjS2W6nnc3J/15v0z1JobQY5 8OP++d3f75zzPd9zzs1N0+bmpmnIoyM+78X5ixOn5PCiDH8DmrqRGRm3vn6nt8RF k80wCda3chhu4FO3QXtNgvZHsxOs4Uaw6lp6ZHzJSbNz46XDtuhkKGBOd3Uc2l6h oF/HfugO+FsOAqKz3h7W7p3pPhE0Hw50u9fJ2by5MjFv0rnVAwvYub5OV9dB7kUg z/Wd1OCsrm+IX/dMbGrRDJ/t0vkvrqR0rv+54+ZyIr2rHgLT1xMyqXtFF5sLQ8+a cdkTvPZZjngzbFvB4K9+uquGfTDYvS8MPEyBiO+++oyCS2AuXZ9VsJHRG7M6kL7u kOmPHnvofp3hgAa/ve2/jPr0hzvmmhDgf3lLrJZ0riQOFXR89mbUDPSeUCcxEmYR SFjMPea49/5oUtd+/kZUQJkxucK6gkSwLycyep5ZWlXwmAMk9q9m7lsvd2k2kAWJ mZyShz0uDJ3SedZyz2aR1ybWoGO7zGMdJPTKQG/EDIr92DH+67yeI9LkNVsyggN2 IzyDHwTdViGO1gf8shl2RgIPLtjN85euz1WsI+DYG0/lFEPWkuk8j50WP6801xJV C0D4iF+Zx6CU4Dg1G3Bj01lVjpHcQymA26NlHc8sFdeV4avrD9xS5BX2w3j2H4un XZ0Yj2OszRXWNEjIGScjYlNZnSutbezYX+KppS33EwKYLWn4CYC2PNo5zrEnFGwz rzjZZ0smR4LI8OrCj5n5gmsTVcqbnfjCWuxnDL4QcfWCb3WwHpphXiHtUXr66Q5l U8wJQGeoXRmJMzhGOekURtrzdqcBkwkYaQFiD+5ZNlf3GVhqs4d9ynqL0luOaTC9 wjz6bN8gmHsRgLFBhpx2vc0ab99DwgW/W4Hssbq/P991VI8EBRl3MtHaDjG81eEJ 2Ts2vahBxseEQ5pqqSnDYAsjOZdXh7w1O+D36T2ELMIgHCz3Pp8wJ6yMtc/UmtGs 9ZKFe5QuGM7e8R0c2k0ACHu8b3G1vNEBIkGE+bW+eJUcf+3+9rhT9lv7Pv5uyqQk KynBZN2eMswym96AofQS25MYnJdL0aKr8HWHocxRfsigxI29gYse2/RhNWQhezRj JXhkdU8k6AIBGwEVBlOCyOTtehgM5hn6ILZZIn70/dS2YMP8XHHNJQ1YQJicWasA n4xgzvtWCRb0L8og5/3R44rhbgGH6N2RYAVRq6VlZGQEMIbkPOrNmic7HlMwWn3N CshYPKMsX8j/o00YR8NOGttSdH9j07S2NJnJuWV9Lie9CgevJhcq9p2cXTYrpfuy vs0FvMnJ5ElxjkwGNILCnj/e+lOdzubXNIAR2ePadJkk6GDuLyGI/gZq8ylZFuTZ 25mVLaUvNV9UIJ6SZ5dLD8yY9B1sYe2KXLMmK7Y/HmhVPcsy9/OdcnDBgipS9iGv uhGeY+6Xu3+rzb+LDvT8ll5R/9F1W84pj/jj1aW/ip01zBG0o6KbCnI1ma2wX8j/ iX6aOn9x4hu5frvxQaGupShvrUHbw2428Kh7uem+dEjkRvnt2MCkrj/+vlfxtd75 CNz4e6U+g7X175WGPBryrwADAMfY9Ie9kVBHAAAAAElFTkSuQmCC ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=showAllThumbs.png Content-Type: image/png; name=showAllThumbs.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/showAllThumbs.png Content-Transfer-Encoding: Base64 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 ACBQ0k+WM4v1AAAAAElFTkSuQmCC ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=h2-bg2.gif Content-Type: image/gif; name=h2-bg2.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/h2-bg2.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAdAMQAANHm9vj7/vP5/fT5/dXo99Pn99Ln9vX7/9rr+dDl9vT6/fb6 /tjq+M/k9c/l9dTo9/j8/tbp+PX6/vX6//X6/ff7/vb7/tfq+Pj8/wAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB0AAAUY4DFhUBBU1iJRyjAIAsJc EfEUBgAkThMCADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=issueNav.gif Content-Type: image/gif; name=issueNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/issueNav.gif Content-Transfer-Encoding: Base64 R0lGODlh0wBXAPcAAPb6/f///9Dl9hdQCLTT6HKs1ABrAApUpICn0Pv9/vX5/fH1 +fD1+v7//7XT6HSt1ANtA8zh8Oz0+jGIM/D0+PX5/MLb7fT5/cHb7PD2+oy83PP4 +jSJNo693e/1+vX6/eLu99Dk1p/IpJTBmN3r9eLu6Mfe7+v0+t7s9rbU6cbd7vD3 +5bB36jNrcHb7b3Y69vq9UOSRODt9uHt9qLI483h8PD1+ePv96TJ41qfXF2hX4W3 2rPTudzr4snf79Tm8pnEnoi52+Xw64u73Nbn83qyfSN/JIC02H+1g/P4/Mvg7+rz +ejy+Rp6G9zr9e71+9np3+Xw+FGaU7PT6M3i04W4iXyzgHev1XWu1e30+ujy7qXL qsvh0LnW6pTA33iw1u/2+7zX67HStubx+PT5/JzF4bXT6cXd7gZuBsDa7IK12cTd 7rfV6eny+dnp9O71+rXU6cng7/D39/L3/LnXvr/Z7AlwCUCQQZ3G4uTv9+vz+S6G MN/s9pbCm9fo89Hk8Yu8j06YULvX6vH3+9Xn8x18HtXm8wxyDMjfzdLl8imDKsPc 7dPm2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADTAFcAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixYIMFAjJq3Mixo8ePIEOKHEmypMmTKFOqBLmgAUKMHioAmEmzps2b OHPq3Mmzp8+fQIMKHUrUZgUPAhYgFMCgqNOnUKNKnUqVJwMBSxVU3cq1q9evQRVg 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 d1+N2kGmlteiG/3oVUvrXJfO9KaLLSAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=toc-h3-tl.gif Content-Type: image/gif; name=toc-h3-tl.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/toc-h3-tl.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAKIAAGmCuoOYx7zL6+72/I6izAAAAAAAAAAAACH5BAAAAAAALAAA AAADAAMAAAMGOBJCEAAkADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=toc-h3-tr.gif Content-Type: image/gif; name=toc-h3-tr.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/toc-h3-tr.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAKIAAGmCuu72/IOYx7zL646izAAAAAAAAAAAACH5BAAAAAAALAAA AAADAAMAAAMGKBNADCIBADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=gradient.gif Content-Type: image/gif; name=gradient.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/gradient.gif Content-Transfer-Encoding: Base64 R0lGODlhBQCCALMAAP////T09PX19fr6+v39/fj4+PPz8/b29vf39/n5+fv7+/7+ /vz8/AAAAAAAAAAAACH5BAAAAAAALAAAAAAFAIIAAARi0MhJq70y6M27/2DYCWRp nmiqmkfrvnAst0ht33iu10Xv/8CgsJcoGo/IpLI4aDqf0Kh0+lRYr9hslsHter9f gnhMLpvPaPJizW673YC4fE6v2+/4vH7P7/v/gIGCg4SFgBEAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=tray-bg-r.gif Content-Type: image/gif; name=tray-bg-r.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/tray-bg-r.gif Content-Transfer-Encoding: Base64 R0lGODlhBQDoA4AAAOTi4v///yH5BAAAAAAALAAAAAAFAOgDAAJZjI+pG3DgGpSw 2ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn 1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6pgAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=tray-bg-l.gif Content-Type: image/gif; name=tray-bg-l.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/tray-bg-l.gif Content-Transfer-Encoding: Base64 R0lGODlhBQDoA4AAAOTi4v///yH5BAAAAAAALAAAAAAFAOgDAAJZjI+pCNwGIoyN 2ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn 1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6pgAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=handle-bg.gif Content-Type: image/gif; name=handle-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/handle-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMXALMAAP///+Ti4r/T465jLvr7/dnl79Ha47WKa8PT4N/p8QAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAxcAAAT/EMhJq7046827/2AojmRp nmiqrmzrvnAsz3Rt33iu7zxGCL2gcEgsGo/IpHLJbDqf0KiMUEhIr9isdsvter/g sHh8ohoC5LR6zW673/C4fF4xB9D0vH7P7/v/gIFNdneChoeIiYqLjI1ZVAh3hY6U lZaXmJmagoSSm5+goaKjpKUznZ6mqqusra6vhlQHkrSwtre4ubq7RrIDtKm8wsPE xcbGvr/AeMfNzs/Q0YzJysDS19jZ2tte1NW13OHi4+TlMd7fwebr7O3u5ejpk+/0 9fb3uvHyzPj9/v8AKaFaZi2gwYMIE8IZSBCcwocQI0ocVOBMw4YTM2rcyHFKxYsX cgWIHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMq XSrUIsinUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3 rt27ePPq3cu3r9+/gAMLHiw3AgA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=nextFig.gif Content-Type: image/gif; name=nextFig.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/nextFig.gif Content-Transfer-Encoding: Base64 R0lGODlhQAAoAOZYAABrAGaZzCQrTv///2eazANsA9rc2n6nz7vMu3+n0Nzc3S+D LyyCLMvT2q3C1jyKPJOz0oWvhcvUy4ar0VOWU9PX3I+1j7fH2Je5l7PF13ejzhd3 F6S81QpwCnqkz22jbQhvCHClcLDD11GVUcDM2bbH142v0s/V24exh5S3lH2rfdrb 3XOgztXY3LvK2GqbzbbJtr3L2K/D1hp4GsnS2oyv0XKmcsbRxqK71aa+1c3VzZGy 0iR+JMjR2qm/1qbBph97H0aPRsPQw2yczcfQ2oWr0DmJOdja2KG71HipeNDW0CqA KnShzqG+oZ+9n7PIs2mbzNbZ3IqyigVuBUmRSdDW27nKuXymz93d3QAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAFgALAAAAABAACgAAAf/gFiCg4SFhoeIiYqLjI2O j5CCNBkOMRWRmJmDGSwBnp4mJ5qjjBU1n6gBQw6krYZRHqmyOa61WBCysgREtqQN BLmyE4QCxI3FrTiyAwHMqAQtgwLIWNSK1poTuczOny7S1YLI0+PS5NiRV8HcqDLg 5dTw4q4H282pJeDhxefx+qQ7lt1L1UMfv3CG/LW6EEwWE2PiDs7bN5GUAg0NUfmA OJFcxXHoIpEAljHBil6tRLxomKAKSlcNEsiCwkHBy1oKLkA4cKAIkgY3gwodSrSo 0UxWLERoIuGoJgsbAEiVSkWI00cSgkzdCqBDhKuMlPDgSjYJWEUUyJIt8OTsIQQF hNSSfcAR4aKQkUKQHQCA79YCOsz9u+bqgVq+fqc6eddx2sdzpJbIRbwVBWOKHRHi hcTgcF+uKQzug/zR1Yi9n7nCEC2xkEJSGOSSncHRsUKJmx8ZACJ7q4q6IMs1bvUj bu8FR9wikgJC9oIbyhMhWEB2ig0D0RUZwECBAQMjHxBkHz8qEAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=showThumbs.gif Content-Type: image/gif; name=showThumbs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/showThumbs.gif Content-Transfer-Encoding: Base64 R0lGODlhdgAmAIABAK5jLv///yH5BAEAAAEALAAAAAB2ACYAAAL/jI+py+0Po5y0 2ouz3rz7D4biSJbmiaYPwAaAxsbu9VZvrRr4vOH79APmDruYr8WrBY9In8uolD2R U93NGiQ5dbyZkpvYeolJrlMMvmZPXzNZ3SWDx+7yWW6sr03X+hgeJkdH93XnVyio 0jcItyhoSHjYtYiYWCK1JTW5IBbV0naDiScaujd0ipqqusra6voKGys7S1tre4ub q7vL2+sLImMKARUnZFOcUsSBZmwhPFKkKVoWiNXmRTzlyWSVRMX2uAmq0CmeZj53 7qg4R/mHXG5YyWith+p+B4gQ/6beL0lvCL5++sJJGgfJ3SBk0JqMKkfOYB6E07w5 LPUro8aNEgygePwIMqTIkSRLPuOIMuWqAgA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=hideThumbs.gif Content-Type: image/gif; name=hideThumbs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/hideThumbs.gif Content-Transfer-Encoding: Base64 R0lGODlhdgAmAPeXADNmma5jLv///zVomq9lMPn6/NHZ4ezs7eTZ0ViBqryAV1uD q+3s7Lt/VFeAqc+jg8aXdtS2ofr6/Iakw7PD0/z9/f3+/r+JYnmZuay+0KO4zGaL sNe9qtrCsfr18unj3vL1+d/j55Ksx2OJr/j6+6W5zXGTtfv29PT3+buHY83W38iV ctzHuL+HYJiwx7BoNbp9UsvU3tW4o93IuuPm6dG/s8qZd8PQ3FJ8p+PXztje5MWW dHWXum+Steff2uLUykl2o/z5+PH09rBmM7+Qb+rh3K9lMrNuPsDM2da2odKxmrvJ 1+be16i7zk15pTZom86pj3aWt9GuljprnNGnifz6+LFqN+PVzI2pxmGHrcqaeMST cEJxoLDB0nqbvK6/0VaAqbqEYOnk4Nnh68/Y4OLk6NXAs+rm4zdpm1iAqdrg5caZ enucvUd0ord+VqG3z+zn5NvPyM+rks+rkW6RtLl+VLVyQmSJr7ZzRY+pw9a6pjxs nZSsxcKPa/X0897k6+Dk6tnAr7nI1rd3SdKoit7Mv+rr7MCUdoypxc6ojZ2zyeHn 7pKrxOrk4bh+VXqbvXKVuHeYuOHk6Ll6Tuzr6cORbbHB0+7u7gAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAJcALAAAAAB2ACYAAAj/AC8JHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDM+zMEhwowPGkOKHHmJg50AKFFWYkKypUuHH/qknBnASoSX OHMOPDMp5ZE4RcLMlBIxAEGjl5AOVGqQZtKJTB0ajaoQwkwiEiqYMZKSwA+ITKkK FHt0KVSKZA0iIJAyBRwBAqqsmXkBbFmUY1Pmpap05lizNJH6Tap3b96nhNNCSVmn EVy4fg51FfMw8N++iDP/3fwUs+DLgM2W7awZ4YWUNQo8FmChzEwWlUdPBTxYdObZ oBHjJr15MO60AmGkdCNndRJHM2XEFr17d1PbzXXn5k39M+aEDWZuWf2AZqDlvW+L /x8t3nN489Otkze4Y6aN1VRoXgEvPbFgvAWv69b7uXPh6775B1wHM2mxGiEz4aHT giMxMEhKK3hwggdBdJeSEgxmqFEhbAU2kwKUaCjiRXq84CFKCvgw4ooVIaBAYEPM wQCLNE7EQAcQNNBAC4kgUOOPQAYp5JBEFkRGBhosEUKRTBKUQRsARBmlCTo0SWQI dEipJQB7aGBlkDTgICUXN4yRhZYuRAQAQWte0uZAbxq0pZsTxenQmnYqhIGWPWRl yRNSDhADRHHmKZChbMJZJ0WIGmTAAFLesQhcBXih5QaEJhrloVJymuebWh6q6JZt hupmp55ySuepjTIiZRp/rN4mRBSBSvIQqaKCuuquovZKp66l5jqqoon+yitCG0j5 hWqPWQCIloLcWiyeo5pK7K7UCrtqtsb2amq2jQoEhpQOiLDaGw5oWYK0xHLLrZzX uruttt3WG6yuCSWgJSSrTbBlF+x6i+3AxQ4MrMAH03tvwQZFouUjqyGypQoBz8tq qZsWhO+2nQb7K6r4fvtxuBRoycZqWGgJxJc0HuCElDyAgAIIJPgrpSK3kqrzzjz3 7PPPQKNqEBKQ9ryAISzX2MQUPC+gRtI/GrAAqWjwcQDUQB5AAQYJJDBCHgYgFBAA Ow== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=articleContent-bg.gif Content-Type: image/gif; name=articleContent-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleContent-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhpAABAIAAANHm9v///yH5BAAAAAAALAAAAACkAAEAAAINhI+py+0Po5y0 roBDAQA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=articleNav.gif Content-Type: image/gif; name=articleNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleNav.gif Content-Transfer-Encoding: Base64 R0lGODlh4wBXAPcAAPb6/f///9Dl9hdQCApUpLTT6HKs1ABrAICn0Pv9/vH1+fX5 /f7//7XT6HSt1ANtA8zh8Oz0+vD1+vD0+PX6/fT5/cLb7fX5/PD2+vP4+sHb7DSJ Nu30+TGIM4693Yy83O/1+tDk1uLu97bU6d7s9t3r9b3Y65TBmMbd7qjNrZ/IpODt 9vD3+8Hb7eHt9sfe7+Lu6Ov0+tvq9UOSRJbB312hX1qfXKTJ483h8OPv96LI4/D1 +bHSth18Htzr9Yi525nEnsjfzcng74W32rnW6imDKuvz+X+1g7/Z7JbCm+30+glw CYK12cXd7rnXvuXw+Mvh0OXw6+71+kCQQVGaU3Wu1QxyDNbn83iw1nev1Rp6G4u8 j6XLqubx+LXU6cDa7CN/JPH3+9Tm8sTd7rvX6urz+dfo8/L3/N/s9sPc7Yu73Nzr 4i6GMLzX6+/2+9Ll8rPT6J3G4u71+9np9HyzgNXm83qyfYW4iZTA38vg7+Tv99np 3/D39+jy+QZuBrfV6bPTufP4/E6YUNHk8fT5/IC02Ony+ejy7rXT6cnf79Xn85zF 4c3i09Pm2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADjAFcAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixIgMFAjJq3Mixo8ePIEOKHEmypMmTKFOqXMlRAQOEGEFcAECzps2b OHPq3Mmzp8+fQIMKCBC0qNGjSG1eACFAAUIBEpJKnUq1qs+hVrNq/Slh6EEBC7aK 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 pwJ84BkXcQdRXHinT/3qP9dy2s2+9rdPuoAAADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=gradient1.gif Content-Type: image/gif; name=gradient1.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/gradient1.gif Content-Transfer-Encoding: Base64 R0lGODlhAQB3AMQAAO/3/Pv9//r8/v3+//f7/vj7/vb7/vv8/vn7/vz9//z+//L4 /fD3/PH3/PT5/fX6/fn8/vL3/PP5/fb6/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAHcAAAU0ICCOZAkwaNNESys5zvNM Rm3XRK7rRe/3iKAQAYEIjkjkYck8BJ7QqDRBrSYU2KxiwO12QwA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=plusMinus.gif Content-Type: image/gif; name=plusMinus.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/plusMinus.gif Content-Transfer-Encoding: Base64 R0lGODlhDQAaALMAAP///zNmmczZ5WWMspmyzNni7H+fv6W80oypxQAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANABoAAARMMMhJKbg4A6k7x0IgZN8V jthHEEZgrNdXyYEpHMEhoCVwkjVMYVAAdjS942zJXB6Nz1gwmvQEC7ssLziYSS+I gXj8jW6mzyoSrWxSIgA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=rss.png Content-Type: image/png; name=rss.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/rss.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJDSURBVHja jJJNSBRhGMd/887MzrQxRSLbFuYhoUhEKsMo8paHUKFLdBDrUIdunvq4RdClOq8H b0FBSAVCUhFR1CGD/MrIJYqs1kLUXd382N356plZFOrUO/MMz/vO83+e93n+f+1z F+kQBoOQNLBJg0CTj7z/rvWjGbEOIwKp9O7WkhtQc/wMWrlIkP8Kc1lMS8eyFHpk po5SgWCCVO7Z5JARhuz1Qg29fh87u6/9VWL1/SPc4Qy6n8c0FehiXin6dcCQaylD MhqGz8ydS2hKkmxNkWxowWnuBLHK6G2C8X6UJkBlxUmNqLYyNbzF74QLDrgFgh9L LE0NsPKxjW1Hz2EdPIubsOFdH2HgbwAlC4S19dT13o+3pS+vcSfvUcq9YnbwA6mu W9hNpym/FWBxfh0CZkKGkPBZeJFhcWQAu6EN52QGZ/8prEKW+cdXq0039UiLXhUY zdjebOJQQI30UXp6mZn+Dtam32Afu0iyrgUvN0r+ZQbr8HncSpUVJfwRhBWC0hyG V8CxXBL5SWYf9sYBidYLIG2V87/ifVjTWAX6AlxeK2C0X8e58hOr/Qa2XJ3iLMWx B1h72tHs7bgryzHAN2o2gJorTrLxRHVazd0o4TXiyV2Yjs90uzauGvvppmqcLjwm bZ3V7BO2HOrBnbgrQRqWUgTZ5+Snx4WeKfzCCrmb3axODKNH+vvUyWjqyK4DiKQ0 eXSpFsgVvLJQWpH+xSpr4otg/HI0TR/t97cxTUS+QxIMRTLi/9ZYJPI/AgwAoc3W 7ZrqR2IAAAAASUVORK5CYII= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=pubsNav.gif Content-Type: image/gif; name=pubsNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/pubsNav.gif Content-Transfer-Encoding: Base64 R0lGODlh6AM8APcAAOnt9Bw/lKKw00llqVt0sYeZxh0/lEhkqEZipkNfox8/lCI/ lEFdoTpWmj5anixIlClFlDNPlDBMlCZClDdTl////wAAAImbx8DK4Xx+gquus8rN 0x8gIT4/QYyOkl1fYhAQEC8vMWB7s7q+w9nd5G1vck5PUfHz+OTo8eLm8Zueo4ea xpGgxuPn8WJ3sY2cxmR5sU5mosjP4qm11EZeopKhxmyBs4WVv8fO4khgomd8sUxk oml+sdTZ6o6dxpSjyMrR4/Hy+ENbosnQ4n+Pv/L0+FxyqWB4tIuaxlJqpXCHvJKj y+fr86Gw0mB0sdbd6x5BldLa6ShJmrvG36Oy032Ov8bN4qiz1GN9tD5do6SmqzhY pK251GF7s2F8s2J8tNfd6tbc6piny6KvzoOUv0Fbm6y31F91rK+61au21G+DtYCR v7rD24eYwTdRmzRPm8XN4nWIuJqpzbjB2+Xo8lFoqaWorVRqqXGGuNXa6kRenpal yVhwq9Ta6pqnzbfA2/L0+ZuozTpUm/X3+jRTn3KFuGV7sXSIullwqae11tbb6neK uGR4tJ2qzZ6rzeXp8j5Ym1Rtp7nC2+bp8rzG3KOw0FZtqY2ex4ucxWyAs1pzrsrS 5MzT5W6BuNjd6xQUFbvE26Wy1E5op3CDuNnf7MzU5omawsDJ4RITEyYnKHqMuk1o q8LL4sHK4UlKTb7I4Km21qy42PDy+O/x96a01VlysKCtzUdhodje7GZ+t7/I32N7 tYOWxEpjokFan0xmpMPM4pmoz7K92FhxsD5Yn0JfplBpp/Dy97C71zZTn0Ren0tl pEdgn4udyIqcyH2Rwqeqr5qpz0pmqaaz05WlzamssVRtq3OGtiJElzlTn1VvrjpY omR8tlJsqlZwrjxVn3eLvJ+t0ml9s9zg7bO+2aey1GV5szc4OYCTwHuPvtHX58XO 4+/y93qNvWJ3s93i7dvg7XmNvnSJuaWy0u3w9sTM4md9tO7w9niLu3yOvMLL4Wd7 s9zh7cPP38TN4n2RwSH5BAAAAAAALAAAAADoAzwAAAj/ACsMYhVLgMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMA2GejWowglY MXPq3Mmzp8+fQIMKHUq0qNGjSJOWTCSr1UFeuwhInUq1qtWrWLNq3cq1q9evYMOK HUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3as3V7ODpxIZfDagsOHDiBMrXsy4 sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXA6Q5M0jroDbY uHPr3s27t+/fwIMLH068uPHjyEFzU5i8ufPn0KNLn069uvXr2LNfrsVcu/fv4MOL /x9Pvrz58+gLc094oL379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjg ggw26OCDEEYo4YQUVmjhhe4NoxACHHbo4YcgIhDPOrP8E+KJKKao4oostujiizDG KOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqWSS3iiUwJNQRinllOD4U0EF s6Qz5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp 5593WqMQA4QWauihh4IDzJVXztIOopAaukWklMpRAaWYZlqoHJNoKgopkZbCaAXk aFropKYycAijpNiTKgOTyP/xKqWovkqKKKlecumsmIpagayIrnolIJekKgqxvCZr aq2arqqJoZwyoKuym3ZKbarMmnortFdOcoi0gFw5DaKAbArsrJpU8O212Ca7LQPp rstuoaWUUmis1GY7L6HojEtotPsum6qzhOr6bLAVHBzwwgw37PDDEEcccTcKOWDx xRhnjLE8+ox65TH4aCzyxViMbLIYFZis8soXi/EIyygbojImFcjMssUl3+wAHhXw 4QAunOjswCNiCG1yzjobUkHRJnPCNM1GqywGIHwYErTGPOPhgDAVLHPzMoBgEvXY NyPNMs8+t/wy1GRb7HLbQpvNstJMOzAPIFpjUvQjuIz/rLTNuggzNh8VaA23znLP vbTFhBtuNB+4OH4xJ1cPXXfUiR9usS6AqK2zGJWTnbnIaFtMc9oZl6756qy37vrr sMcu+9jGKNTA7bjnrjvucajjMaPHxLH78Ld/Qfzxe1Rw/PLM474HHc17Qkcly9Ox SfO5G499A2pUEEkDz2/fAB17iH+89ttXQocny1dQfgOmKG/+8chcDz4yu3evBvcV 7D///wA8n/i6973dxS+ACPwf+rCnPvY14Bbu050nqDc8UxSBercoggPNF4n+JXB7 C2Tg+m7XQf+ZT3+724T9xvc+BX5wdxCkQz5uFz7sqTCBITweAW8XvwLqbocvDKIQ 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 2932vndK8q1vfvdb4PLW9/++B57nf9f74L9OOMAXfuaGK/zhfIk4vI1d8YJnXOMb 53jHPf5xkIdc5CMneclNfvKTE+KSAWB5y5ew6CW0XOYvn7iiYy5zltP84DfHuc5r /vM183zmQA86znNOdEgLvedIH4vSh850lDjd5caWutGtfnWsZ13rW+d6173+dbCH XexjJzvZVW48o0thCoSeghSsrnao37ntb1/7wOee9rrHXe8quTvO4b53vvRd5n8H vJ0F7/e86/3wg0880RffcsLn+vFlp3zlLX95zGde85tv+dmnZXUoKIEKGCB96U1/ etSjvh9UUAIUsB760ade9rOnfe1tf3vbs971V4c97n3///vS6/71ogd+8Y1/fOQn //bC5z3xlf/85zMf9M6HfvWtP/vWa7331+f+6aXf/Nh33/rfn374xW968nNe/etn f/vd/36Wex442IB//e1/f/znX//753///f9/AAxAARxAAixAAzxA/NsG4EiE31gF BHxACIxACZxACqxAC7xADMxADdxADgS7I/gNWmiF3wiGYuhAEzxBFExBFVxBFmxB F3xBGPS/VQiH3ziFE4AF4KCGAthBHuxBH/xBIAxCIRxCIixCIzxCJExCJVxCJmxC J3xCKIxCKZxCKqxCK7xCLMxCLdxCLuxCL/xCMAxDMRxDMhzDaFhAWaiAQWCFWLgk Qjd8QziMQzmcQzqsQzu8QzzMQz3cQz7sQz/8Q0AMREEcREIsREM8RERMREVcREZs REd8REiMREmcRDwMhVcYhAoICAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=journalNav.gif Content-Type: image/gif; name=journalNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/journalNav.gif Content-Transfer-Encoding: Base64 R0lGODlh6AM8APcAAHGGuSxIlEFbm3x+gjdTl7nC27q+w7K92E1lonWIucDK4ThY pJqozdfd6lJqpaGuzpiny8TGzZSVmJueoxAQECZClOLm7YyOktje7Ehgor3BymR5 seXo8tLa6YuaxoSEhm1vcnFxcqSmq2B4tPL0+JalyWtqa8rN07W7yNTa6t3h7I2c xqWorVhwqqKrwbfB22B7s2Z9tW2CuYudyGRkZHuKszRPm+7w9pKhxp6rzdHU2qe1 1penzWN8tGyBs05prOnt9Gh7q2l+sXOGts7R1nmNvn6Swl1cXOfr85ulvlVtqbzG 3ENbosXN4rm+yjdRmzRTnxw/lD9epMDJ4aGipqKw083P0sfKz0llqVlysI2Zuktj opOfvFhtpXGCr7Gzt9vf5Xt7fMrM0bO5x6mwxDpUm4COtVt0sYmZxipGlIeZxjJN l0hkqB0/lB8/lEZipkNfoyI/lDpWmkFdoT5anitGl////4mbxwAAADNPlClFlDBM lB8gIT4/Qauus11fYi8vMdnd5OTo8fHz+OLm8U5PUePn8Y6dxpSjyJGgxn+Pv9TZ 6oWVv8fO4tHS06y31FhXV6251Gd8sUZeocrR42J3sYCRv4OUv2B0sVxyqcbN4sjP 4snQ4oeYwaiz1H2Ov6m11K+61VRqqYeaxqu21PHy+KGw0j5Ym8zT5dbb6szU5m+D tmF8s2R4tOXp8vX3+lFoqVpzrl91rLvG3x5Blejs88rS5ChJmpKjy4ucxaOy08LL 4r7I4ElKTaWy1Ky42EtlpEdhobvE23qMuomawiYnKI2eyPDy+Km21pCfx5Ojx4+e x05op3yOvaOw0IaZxjJRnr/I30pmqUdfn+/x95+t0jlTnztUnVVvroOWxExmpH6R vlZwriJElzxVn62vs6mssVJsqj5Ynzc4ObG3x6az04WStmBfYIiVtouXuWJ3s0Rb n+bp8DxWmm6AroeUuHeKudHX58vO1MLL4eHl8cPM4uLl8dXY3qiqr8XO43mIsqqs sNjb4tnd4ypFlydEliH5BAAAAAAALAAAAADoAzwAAAj/AO282vWrisGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMA364vXKziBk MXPq3Mmzp8+fQIMKHUq0qNGjSJOW3HFMwcFsPc5InUq1qtWrWLNq3cq1q9evYMOK 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 nuAKvuAM3uAO/uDP/QPVYBBTcBMHUQJqkOEavuEc3uEe/uEgHuIiPuIkXuImfuIo nuIqvuIs3uIu/uIwHuMyPuM0XuM2fuM4nuM6vuM83uM+/uNAHuRCHuQMMN/HIBAE oRRKvuRM3uRO/uRQHuVSPuVUXuVWfhEzURNIXhBX3uVe/uVgHuZiPuZkXuZmfuZV kOU2gRNo3uZu/uZwHudyPud0XudHwRQEXgVQwRd83ud+/ueAHuiCPuiEXuiGfuiI /57oir7ojL4XfgEYtUEY6THplF7pln7pmJ7pmr7pwSEbAn4Qt6EYIzAKd1Dqpn7q qJ7qqD4KI8AYI6DqsB7rsj7rtF7rtn7ruJ7rd9DqiTHquv7rwB7stl4EP+AYvi7s yJ7suk7soq7szv7ssM7rhfHq0F7t1r7rh0Ht177t3N7tsS7tiHHs3j7utM7svU7u wQ7unL4cCbEYpgAE8B7v8j7v9F7v8G4KivHu9r7v/N7v/v7vAB/wAj/w+47vh6Hv BJ/wCr/wAR8PMcAYCM/wEj/xCe/wiBHxFJ/xGk/vBo/xG//xH9/xID/yJF/yA2/w B2/yKl/xD5/yKy/xKM/pGv9yEIoxCiQ/Cohh8y+/8zzP8DhfGDrf80IP8B1Q7IkR 9EOf9PNe9IaB9Eo/9KPg9E+f9FE/9VZ/9fL+80CP9ULP9FvP9f2u9Zs+8wYhHx1A 8h0AH2cP9mxf8mnfHmvf9klvBGYv9z1P93Bv9yrfAXGv9ybP934f+CD/9nkv+COP 92zQ94FP+BjS+PJB9lUQIkgA8ODQCxQgAgCPBB8y+Ybf+QGv+RzC+Z5v8jwQIqNP 8qUf+qef8Ugg+qtP8a3/+rLv76DPIbM/8an/Bq4f+LW/JL6PIk2SEFtC+b2AB3hw +QAvJbe//FCy/B/PA1ASJ86P+80//dZ//djP81GS/QL/D/1PcvqNEv5o8igJ0Sn/ jg/Fb/zHj/n+Tin77gfqDwgGkPR8MAAEPwB4UPIDwAcTDxBzBAIhWNAgwQF4Di5k aDAhHjyFTjTkM+AgngsI+Sy8oLAhQz5/PgLhIXBOD5MjCQYqBBHQRJUxZRYcsHHm zYMlB34cYJGgTYZ9RC6siZMjnolCjS4FcgKQSwMN/SAlqNSonz40PTLl2tDAUzyA Gv7JetPqx0AUMi59WHYhRIggzA7titPknI9fXY51y/TsyKkw6xrUiVcloEAET+Dx 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 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/script.js Content-Transfer-Encoding: Base64 LyogZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBmcm9tIGRvY3VtZW50Lm9u bG9hZCBldmVudAogKiBtYWluIGV2ZW50IGhhbmRsaW5nLCBmb3IgYWxsIHBhZ2Vz ICovCmZ1bmN0aW9uIHByZWxvYWQoKSB7Cglsb2FkKCk7Cn0KZnVuY3Rpb24gcHJl dW5sb2FkKCkgewoJdW5sb2FkKCk7Cn0KCi8qIGZ1bmN0aW9uIHRoYXQgd2lsbCBi ZSBjYWxsZWQgZnJvbSBkb2N1bWVudC5vbmxvYWQgZXZlbnQKICogb3ZlcnJpZGUg dGhpcyBmdW5jdGlvbiB0byBkbyBpbmRpdmlkdWFsIG9ubG9hZCBldmVudCAqLwpm dW5jdGlvbiBsb2FkKCkKewp9CmZ1bmN0aW9uIHVubG9hZCgpCnsKfQoKLyoqCiAq IENoYW5nZSB0aGUgZm9yZWNvbG9yIG9mIHRoZSBlbGVtZW50IHdpdGggaWQgZWlk CiAqIHRvIHRoZSBjb2xvciBzcGVjaWZpZWQgYnkgY29sb3IKICovCmZ1bmN0aW9u IGNoYW5nZUZvcmVncm91bmRDb2xvcihlaWQsIGNvbG9yKSB7CiAgICBpZihkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCAmJiAoZWxlbT1kb2N1bWVudC5nZXRFbGVtZW50 QnlJZChlaWQpKSkKICAgICAgICBlbGVtLnN0eWxlLmNvbG9yPWNvbG9yOwp9Cgov KioKICogU2hvcnRoYW5kIGZvciBpZCdpbmcgZWxlbWVudHMKICovCmlmICh0eXBl b2YgJCA9PSAidW5kZWZpbmVkIikgJCA9IGZ1bmN0aW9uKGlkKSB7IHJldHVybiBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IH0gICAvLyBkbyBub3Qgb3ZlcnJp ZGUgaWYgYWxyZWFkeSBkZWZpbmVkIGJ5IHByb3RvdHlwZQoKLyoqCWNjYyByaWdo dHMgbGluayAqLwpmdW5jdGlvbiBSaWdodHNsaW5rUG9wVXAoYVB1Ymxpc2hlciwg YVB1YmxpY2F0aW9uLCBhVGl0bGUsIGFEYXRlLCBhQXV0aG9yLCBhQ29udGVudElk LCBhQ29weXJpZ2h0LCBhVm9sdW1lLCBhSXNzdWUsIGFTdGFydFBhZ2UsIGFFbmRQ YWdlLCBhSXNzbiwgYU9yZGVyQmVhblJlc2V0LCBhQ29sb3IpCnsKCXZhciBsb2Nh dGlvbiA9CgkJIj9wdWJsaXNoZXJOYW1lPSIgKyBhUHVibGlzaGVyCgkJKyAiJnB1 YmxpY2F0aW9uPSIgKyBhUHVibGljYXRpb24KCQkrICImdGl0bGU9IiArIGFUaXRs ZQoJCSsgIiZwdWJsaWNhdGlvbkRhdGU9IiArIGFEYXRlCgkJKyAiJmF1dGhvcj0i ICsgYUF1dGhvcgoJCSsgIiZjb250ZW50SUQ9IiArIGFDb250ZW50SWQKCQkrICIm Y29weXJpZ2h0PSIgKyBhQ29weXJpZ2h0CgkJKyAiJnN0YXJ0UGFnZT0iICsgYVN0 YXJ0UGFnZQoJCSsgIiZlbmRQYWdlPSIgKyBhRW5kUGFnZTsKCWlmIChhVm9sdW1l ICE9IG51bGwpIHsKCQlsb2NhdGlvbiArPSAiJnZvbHVtZU51bT0iICsgYVZvbHVt ZTsKCX0KCWlmIChhSXNzdWUgIT0gbnVsbCkgewoJCWxvY2F0aW9uICs9ICImaXNz dWVOdW09IiArIGFJc3N1ZTsKCX0KCWlmIChhSXNzbiAhPSBudWxsKSB7CgkJbG9j YXRpb24gKz0gIiZpc3NuPSIgKyBhSXNzbjsKCX0KCWlmIChhT3JkZXJCZWFuUmVz ZXQgIT0gbnVsbCkgewoJCWxvY2F0aW9uICs9ICImb3JkZXJCZWFuUmVzZXQ9IiAr IGFPcmRlckJlYW5SZXNldDsKCX0KICAgIGlmIChhQ29sb3IgIT0gbnVsbCl7CiAg ICAgICAgbG9jYXRpb24gKz0gIiZjb2xvcj0iICsgYUNvbG9yOwogICAgfQoKCXZh ciBsaW5rID0gIi9zZXJ2bGV0L2xpbmtvdXQ/dHlwZT1yaWdodHNsaW5rJnVybD0i ICsgZXNjYXBlKGxvY2F0aW9uKTsKCXZhciB3aW5wcm9wcyA9ICJsb2NhdGlvbj1u byx0b29sYmFyPW5vLGRpcmVjdG9yaWVzPW5vLHN0YXR1cz1ubyxtZW51YmFyPW5v LHNjcm9sbGJhcnM9eWVzLHJlc2l6YWJsZT15ZXMsd2lkdGg9NjUwLGhlaWdodD01 NTAiOwoJUG9wVXAgPSB3aW5kb3cub3BlbihsaW5rLCAnUmlnaHRzbGluaycsIHdp bnByb3BzKTsKfQoKCi8qIEZ1bmN0aW9uIHRvIGxvYWQgaW1hZ2VzLgogKglub3Rl OiBtYWtlIHRoaXMgZW1wdHkgbWV0aG9kIHNvIHRoYXQKICogMSkgbWluaW5pemUg Y29kZSBjaGFuZ2VzOyAyKSBmb3IgZnV0dXJlIGludGVncmF0aW9uOyAzKSBlYXNp ZXIgdG8gdGFrZSB0aGUgZmVhdHVyZSBiYWNrCiAqLwpmdW5jdGlvbiBNTV9wcmVs b2FkSW1hZ2VzKCkgewp9CgpmdW5jdGlvbiBNTV9zd2FwSW1nUmVzdG9yZSgpIHsK fQoKZnVuY3Rpb24gTU1fZmluZE9iaihuLCBkKSB7Cn0KCmZ1bmN0aW9uIE1NX3N3 YXBJbWFnZSgpIHsKfQoKZnVuY3Rpb24gbWVudU1vdXNlT3Zlcih0eXBlLCBhY3R1 YWxUeXBlKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWVudUl0ZW1f Jyt0eXBlKS5jbGFzc05hbWU9J01lbnVJdGVtT3Zlcl8nKyh0eXBlID09IGFjdHVh bFR5cGUpOwp9CmZ1bmN0aW9uIG1lbnVNb3VzZU91dCh0eXBlLCBhY3R1YWxUeXBl KSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWVudUl0ZW1fJyt0eXBl KS5jbGFzc05hbWU9J01lbnVJdGVtXycrKHR5cGUgPT0gYWN0dWFsVHlwZSk7Cn0K ZnVuY3Rpb24gbWVudUNsaWNrKHR5cGUpIHsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdNZW51TGlua18nK3R5cGUpLmNsaWNrKCk7Cn0KCi8vIGJyb3dzZXIg ZGV0ZWN0aW9uCmZ1bmN0aW9uIGJyb3dzZXJDaGVjaygpIHsKICAgIHRoaXMubnM0 ID0gKGRvY3VtZW50LmxheWVycyk/IHRydWU6ZmFsc2U7CiAgICB0aGlzLmllID0g KGRvY3VtZW50LmFsbCYmKCF3aW5kb3cub3BlcmEpKT8gdHJ1ZTpmYWxzZTsKICAg IHRoaXMuZG9tID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKT8gdHJ1ZTpmYWxz ZTsKICAgIHRoaXMubnM2ID0gKHdpbmRvdy5zaWRlYmFyKT8gdHJ1ZTpmYWxzZTsK ICAgIHRoaXMubW96ID0gKHdpbmRvdy5zaWRlYmFyfHxuYXZpZ2F0b3IudXNlckFn ZW50LmluZGV4T2YoJ0dlY2tvJykhPS0xKT8gdHJ1ZTpmYWxzZTsKICAgIHRoaXMu b3BlcmEgPSAod2luZG93Lm9wZXJhKT8gdHJ1ZTpmYWxzZTsKICAgIHRoaXMubWFj ID0gKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignTWFjJykhPS0xKT8gdHJ1 ZTpmYWxzZTsKfQpicm93c2VyID0gbmV3IGJyb3dzZXJDaGVjaygpOwp2YXIgT2Jq OwoKLy8gbXVsdGlicm93c2VyIGdldCBvYmplY3QgYnkgaWQsIGluIE5ONCB5b3Ug Y2Fubm90IGFjY2VzcyBhbGwgb2JqZWN0ICh0ZXN0IGl0IGZpcnN0KQpmdW5jdGlv biBnZXRPYmplY3RCeU5hbWUobmFtZU9mT2JqZWN0KXsKCU9iaiA9IG51bGw7Cglp ZiAoYnJvd3Nlci5pZSkgT2JqID0gZG9jdW1lbnQuYWxsW25hbWVPZk9iamVjdF0K CWVsc2UgaWYgKGJyb3dzZXIuZG9tKSBPYmogPSBmaW5kRE9NT2JqZWN0KG5hbWVP Zk9iamVjdCkKCWVsc2UgaWYgKGJyb3dzZXIubnM0KSBmaW5kTGF5ZXIod2luZG93 LG5hbWVPZk9iamVjdCk7CglyZXR1cm4gKCFPYmogfHwgKCBicm93c2VyLm5zNCAm JiBPYmogPT0gd2luZG93ICkgKSA/ICJPYmplY3Qgbm90IGZvdW5kIiA6IE9iajsK fQovLyBoZWxwZXIgZnVuY3Rpb24KZnVuY3Rpb24gZmluZERPTU9iamVjdChuYW1l T2ZPYmplY3QpIHsKCWZvciAodmFyIGkgPSAwOyBpIDwgZG9jdW1lbnQuaW1hZ2Vz Lmxlbmd0aDsgaSsrKSB7CgkJaWYgKGRvY3VtZW50LmltYWdlc1tpXS5uYW1lPT1u YW1lT2ZPYmplY3QpIHJldHVybiBkb2N1bWVudC5pbWFnZXNbaV0KCX0KCXJldHVy biBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lT2ZPYmplY3QpCn0KLy8gaGVs cGVyIGZ1bmN0aW9uCmZ1bmN0aW9uIGZpbmRMYXllcihub2RlLG5hbWVPZk9iamVj dCkgewoJaWYgKCBub2RlLm5hbWUgPT0gbmFtZU9mT2JqZWN0ICkgT2JqID0gbm9k ZTsKCWZvciAoIHZhciBjb3VudGVyID0gMDsgY291bnRlciA8IG5vZGUuZG9jdW1l bnQuaW1hZ2VzLmxlbmd0aDsgY291bnRlcisrICkgewoJCWlmIChub2RlLmRvY3Vt ZW50LmltYWdlc1tjb3VudGVyXS5uYW1lPT1uYW1lT2ZPYmplY3QpIE9iaiA9IG5v ZGUuZG9jdW1lbnQuaW1hZ2VzW2NvdW50ZXJdOwoJfQoJZm9yICggdmFyIGkgPSAw OyBpIDwgbm9kZS5kb2N1bWVudC5sYXllcnMubGVuZ3RoOyBpKysgKSB7CgkJZmlu ZExheWVyKG5vZGUuZG9jdW1lbnQubGF5ZXJzW2ldLG5hbWVPZk9iamVjdCk7Cgl9 Cn0KCmZ1bmN0aW9uIHRvZ2dsZVZpc2liaWxpdHkoaWQpIHsKICAgIG9iaiA9IGdl dE9iamVjdEJ5TmFtZShpZCk7CiAgICBpZiAob2JqKSB7CiAgICAgICAgIHYgPSBv Ymouc3R5bGUuZGlzcGxheTsKICAgICAgICAgb2JqLnN0eWxlLmRpc3BsYXkgPSAo diA9PSAnbm9uZScpID8gJ2Jsb2NrJyA6ICdub25lJzsKICAgICAgICAgaSA9IGdl dE9iamVjdEJ5TmFtZSgnaGlkZGVuSW1hZ2UnKTsKICAgICAgICAgaWYoaSkgaS5z cmMgPSAnL3BhZ2UvaW1hZ2VIYWNrLmpzcD9vYmplY3Q9JyArIGlkICsgJyZkaXNw bGF5PScgKyBvYmouc3R5bGUuZGlzcGxheSArICcmZHVtbXk9JyArIChuZXcgRGF0 ZSgpKS5nZXRUaW1lKCk7CiAgICB9Cn0KCi8qKiBDU1MgY2xhc3Mgc3VwcG9ydCAq LwovKiogcmV0dXJuIHRydWUgaWYgcmVtb3ZlZCwgZmFsc2UgaWYgbm90IGZvdW5k ICovCmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsLCBjbGFzc05hbWUpIHsKCWlmICgh KGVsICYmIGVsLmNsYXNzTmFtZSkpIHJldHVybiBmYWxzZTsKCXZhciBjbHMgPSBl bC5jbGFzc05hbWUuc3BsaXQoIiAiKTsKCXZhciBhciA9IG5ldyBBcnJheSgpOwoJ Zm9yICh2YXIgaSA9IGNscy5sZW5ndGg7IGkgPiAwOykgaWYgKGNsc1stLWldICE9 IGNsYXNzTmFtZSkgYXJbYXIubGVuZ3RoXSA9IGNsc1tpXTsKCWVsLmNsYXNzTmFt ZSA9IGFyLmpvaW4oIiAiKTsKICAgIHJldHVybiBjbHMubGVuZ3RoICE9IGFyLmxl bmd0aDsKfQovKiogcmV0dXJuIHRydWUgaWYgZWxlbWVudCBoYXMgdGhhdCBjbGFz cyAqLwpmdW5jdGlvbiBoYXNDbGFzcyhlbCwgY2xhc3NOYW1lKSB7CglpZiAoIShl bCAmJiBlbC5jbGFzc05hbWUpKSByZXR1cm4gZmFsc2U7Cgl2YXIgY2xzID0gZWwu Y2xhc3NOYW1lLnNwbGl0KCIgIik7Cglmb3IgKHZhciBpID0gY2xzLmxlbmd0aDsg aSA+IDA7KSBpZiAoY2xzWy0taV0gPT0gY2xhc3NOYW1lKSByZXR1cm4gdHJ1ZTsK CXJldHVybiBmYWxzZTsKfQovKiogYWRkIGNsYXNzIHRvIGVsZW1lbnQsIGlmIGVs ZW1lbnQgYWxyZWFkeSBoYWQgdGhhdCBjbGFzcyAtIGRvZXMgbm90aGluayAqLwpm dW5jdGlvbiBhZGRDbGFzcyhlbCwgY2xhc3NOYW1lKSB7CiAgICBpZiAoIWVsIHx8 IGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpKSByZXR1cm47CiAgICBpZiAoZWwuY2xh c3NOYW1lKSBlbC5jbGFzc05hbWUgKz0gIiAiICsgY2xhc3NOYW1lOwogICAgZWxz ZSBlbC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Cn0KLyoqIEFkZCBDU1MgcnVsZSBh cyBsYXN0IHJ1bGUgaW4gbGFzdCBzdHlsZXNoZWV0IC0gb3ZlcnJpZGUgYWxsIHBy ZXZpb3VzIGRlZmluaXRpb25zCiAgICByZW1vdmluZyBpcyBoYXJkZXIgLSBub3Qg aW1wbGVtZW50ZWQsIHVzZSBpdCB3aXRoIGNhdXRpb24gKi8KZnVuY3Rpb24gYWRk Q3NzUnVsZShzZWxlY3RvciwgcnVsZSkgewogICAgaWYgKGRvY3VtZW50LnN0eWxl U2hlZXRzKSB7CiAgICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRz W2RvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aC0xXTsgLy8gZ2V0IGxhc3QgY3Nz CiAgICAgICAgaWYgKGNzcy5hZGRSdWxlKSBjc3MuYWRkUnVsZShzZWxlY3Rvciwg cnVsZSk7ICAgICAgICAgLy8gSUUKICAgICAgICBlbHNlIGlmIChjc3MuaW5zZXJ0 UnVsZSkgY3NzLmluc2VydFJ1bGUoc2VsZWN0b3IgKyAieyIgKyBydWxlICsgIn0i LCBjc3MuY3NzUnVsZXMubGVuZ3RoKTsgIC8vIFczQwogICAgfQp9Ci8qKiBnZXQg Q1NTIHN0eWxlIG9mIHRoZSBkb2N1bWVudCAqLwpmdW5jdGlvbiBnZXRDc3NUZXh0 KCkgewogIHZhciBpbXBvcnRzID0gIiI7CiAgdmFyIGNzc1RleHQgPSAiXG4iOwog IHZhciBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzOwogIGZvciAo dmFyIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMubGVuZ3RoOyBpKyspIHsKICAgIHZh ciBjc3MgPSBzdHlsZVNoZWV0cy5pdGVtKGkpOwogICAgdmFyIG1lZGlhVGV4dCA9 IHR5cGVvZiBjc3MubWVkaWEgPT0gInN0cmluZyIgPyBjc3MubWVkaWEgOiBjc3Mu bWVkaWEubWVkaWFUZXh0OwogICAgaWYgKCFtZWRpYVRleHQgfHwgbWVkaWFUZXh0 LmluZGV4T2YoImFsbCIpICE9IC0xIHx8IG1lZGlhVGV4dC5pbmRleE9mKCJzY3Jl ZW4iKSAhPSAtMSkgewogICAgICBpZiAoY3NzLmltcG9ydHMpIHsKICAgICAgICAv LyBJRSBpbXBvcnRzCiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjc3MuaW1w b3J0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgdmFyIGhyZWYgPSBjc3MuaW1w b3J0c1tqXS5ocmVmOwogICAgICAgICAgdmFyIGxhc3RRdW90ZSA9IGhyZWYubGFz dEluZGV4T2YoJyInKTsKICAgICAgICAgIGlmIChsYXN0UXVvdGUgIT0gLTEpIHsK ICAgICAgICAgICAgLy8gaHJlZiBjb250YWlucyBtZWRpYSAtICJ1cmwiIG1lZGlh CiAgICAgICAgICAgIG1lZGlhVGV4dCA9IGhyZWYuc3Vic3RyKGxhc3RRdW90ZSAr IDEpOwogICAgICAgICAgICBpZiAobWVkaWFUZXh0LmluZGV4T2YoImFsbCIpID09 IC0xICYmIG1lZGlhVGV4dC5pbmRleE9mKCJzY3JlZW4iKSA9PSAtMSkgY29udGlu dWU7CiAgICAgICAgICAgIGhyZWYgPSBocmVmLnN1YnN0cigxLCBsYXN0UXVvdGUg LSAxKTsKICAgICAgICAgIH0KICAgICAgICAgIGltcG9ydHMgKz0gJ0BpbXBvcnQg dXJsKCInICsgaHJlZiArICciKTtcbic7CiAgICAgICAgfQogICAgICB9CiAgICAg IGlmIChjc3MucnVsZXMpIHsKICAgICAgICAvLyBJRSBydWxlcwogICAgICAgIGZv ciAodmFyIGogPSAwOyBqIDwgY3NzLnJ1bGVzLmxlbmd0aDsgaisrKSB7CiAgICAg ICAgICAvLyBIb3cgdG8gZmlsdGVyIG1lZGlhIHJ1bGVzID8/PwogICAgICAgICAg Y3NzVGV4dCArPSBjc3MucnVsZXNbal0uc2VsZWN0b3JUZXh0ICsgIiB7ICIgKyBj c3MucnVsZXNbal0uc3R5bGUuY3NzVGV4dCArICIgfVxuIjsKICAgICAgICB9CiAg ICAgIH0gZWxzZSBpZiAoY3NzLmNzc1J1bGVzKSB7CiAgICAgICAgLy8gVzNDIGNv bXBsaWFudCBicm93c2VyCiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjc3Mu Y3NzUnVsZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgIHZhciBydWxlID0gY3Nz LmNzc1J1bGVzLml0ZW0oaik7CiAgICAgICAgICBpZiAocnVsZS50eXBlID09IHJ1 bGUuSU1QT1JUX1JVTEUgfHwgcnVsZS50eXBlID09IHJ1bGUuTUVESUFfUlVMRSkg ewogICAgICAgICAgICBtZWRpYVRleHQgPSBydWxlLm1lZGlhLm1lZGlhVGV4dDsK ICAgICAgICAgICAgaWYgKG1lZGlhVGV4dCAmJiBtZWRpYVRleHQuaW5kZXhPZigi YWxsIikgPT0gLTEgJiYgbWVkaWFUZXh0LmluZGV4T2YoInNjcmVlbiIpID09IC0x KSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PSBydWxlLklN UE9SVF9SVUxFKSBpbXBvcnRzICs9IHJ1bGUuY3NzVGV4dDsKICAgICAgICAgICAg ZWxzZSBjc3NUZXh0ICs9IHJ1bGUuY3NzVGV4dCArICJcbiI7CiAgICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICBjc3NUZXh0ICs9IHJ1bGUuY3NzVGV4dCArICJc biI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJl dHVybiBpbXBvcnRzICsgY3NzVGV4dDsKfQoKZnVuY3Rpb24gbG9hZENzcyh1cmws IHRpdGxlLCBtZWRpYSkgewogICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnbGluaycpOwogICAgZWwudHlwZSA9ICd0ZXh0L2Nzcyc7CiAgICBlbC5y ZWwgPSAnc3R5bGVzaGVldCc7CiAgICBlbC5ocmVmID0gdXJsOwogICAgZWwubWVk aWEgPSBtZWRpYSB8fCAnc2NyZWVuJzsKICAgIGVsLnRpdGxlID0gdGl0bGUgfHwg J2R5bmFtaWNMb2FkZWRTaGVldCc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5 VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGVsKTsKfQoKZnVuY3Rpb24g bG9hZEpzKHVybCkgeyAgICAKICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoInNjcmlwdCIpOwogICAgZWwudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQi OwogICAgZWwuc3JjID0gdXJsOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChlbCk7Cn0KCi8qKiBET00gRXZl bnQgc3VwcG9ydCAqLwovKiogYWRkRXZlbnRMaXN0ZW5lciBtZXRob2QgbWF5IGFs cmVhZHkgZXhpc3QsIGl0J3Mgbm90IHRyaXZpYWwgaW1wbGVtZW50IGl0IGFuZCBu b3QgYnJlYWsgaXQsIHVzZSBvdGhlciBtYW1lICdhZGRMaXN0ZW5lcicgaXMgc2lt cGxlICovCmZ1bmN0aW9uIGFkZExpc3RlbmVyKGVsLCBldm5hbWUsIGZ1bmMpIHsK ICAgIGlmIChlbC5hdHRhY2hFdmVudCkgZWwuYXR0YWNoRXZlbnQoIm9uIiArIGV2 bmFtZSwgZnVuYyk7CgllbHNlIGlmKGVsLmFkZEV2ZW50TGlzdGVuZXIpIGVsLmFk ZEV2ZW50TGlzdGVuZXIoZXZuYW1lLCBmdW5jLCB0cnVlKTsKfQovKiogcmVtb3Zl RXZlbnRMaXN0ZW5lciAqLwpmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihlbCwgZXZu YW1lLCBmdW5jKSB7CglpZiAoZWwuZGV0YWNoRXZlbnQpIGVsLmRldGFjaEV2ZW50 KCJvbiIgKyBldm5hbWUsIGZ1bmMpOwoJZWxzZSBpZiAoZWwucmVtb3ZlRXZlbnRM aXN0ZW5lcikgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldm5hbWUsIGZ1bmMsIHRy dWUpOwp9CgovKiogU2VydmVyIHNlc3Npb24gYWNjZXNzICovCi8qKiBoZWxwZXIg bWV0aG9kIHRvIGFjY2VzcyBzZXNzaW9uIG9iamVjdCAqLwpmdW5jdGlvbiBfZ2V0 U2Vzc2lvbigpIHsKICAgIHJldHVybiB3aW5kb3cuc2Vzc2lvbiA/IHdpbmRvdy5z ZXNzaW9uIDogKHdpbmRvdy5zZXNzaW9uID0gbmV3IEFycmF5KCkpOwp9Ci8qKiBz ZW5kIHJlcXVlc3QgdG8gc2VydmVyIHRvIHByZXNlcnZlIHNvbWUgdmFsdWUgYmV0 d2VlbiBkaWZmZXJlbnQgcmVxdWVzdHMsIHZhbHVlIGlzIGFjY2Vzc2libGUgdXNp bmcgZ2V0U2Vzc2lvbkF0dHJpYnV0ZSAqLwpmdW5jdGlvbiBzZXRTZXNzaW9uQXR0 cmlidXRlKG5hbWUsIHZhbHVlKSB7CiAgICAvKiBqdXN0IHRvIHRlc3QgY2FsbGJh Y2sgKi8KICAgIGZ1bmN0aW9uIHRlc3QoZG9jKSB7Ci8vICAgICAgICBhbGVydCgi U2VydmVyIHJldHVybmVkOiAiICsgZG9jLmJvZHkuaW5uZXJIVE1MKTsKICAgIH0K ICAgIHNlbmRTZXJ2ZXJNc2coIi9hY3Rpb24vc2Vzc2lvbkFjY2Vzcz9hY3Rpb249 c2V0SmF2YVNjcmlwdEF0dHJpYnV0ZSZuYW1lPSIgKyBuYW1lICsgIiZ2YWx1ZT0i ICsgdmFsdWUsIHRlc3QpOwogICAgX2dldFNlc3Npb24oKVtuYW1lXSA9IHZhbHVl Owp9Ci8qKiBzZWUgc2V0U2Vzc2lvbkF0dHJpYnV0ZSAqLwpmdW5jdGlvbiBnZXRT ZXNzaW9uQXR0cmlidXRlKG5hbWUpIHsKICAgIHJldHVybiBfZ2V0U2Vzc2lvbigp W25hbWVdOwp9CgovKiogc2VuZCByZXF1ZXN0IC0gdXJsIC0gdG8gdGhlIHNlcnZl ciwgcmVzcG9uc2UgaXMgYWNjZXNzaWJsZSBpbiBkb2N1bWVudCBwYXNzZWQgdG8g Y2FsbGJhY2sgZnVuY3Rpb24KICAgIERPIE5PVCBTZW5kIGFueXRoaW5nIGJlZm9y ZSBwYWdlIGlzIGxvYWRlZCEKICovCmZ1bmN0aW9uIHNlbmRTZXJ2ZXJNc2codXJs LCBjYWxsQmFjaykgewogICAgLyogY2FsbGVkIHdoZW4gZnJhbWUgaXMgbG9hZGVk ICovCiAgICBmdW5jdGlvbiBfcmVjZWl2ZVNlcnZlclJlc3BvbnNlKGV2KSB7CiAg ICAgICAgdmFyIGlGcmFtZSA9IHdpbmRvdy5ldmVudCA/IHdpbmRvdy5ldmVudC5z cmNFbGVtZW50IDogZXYuY3VycmVudFRhcmdldDsgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIElFIDogVzNDCiAgICAgICAgdmFyIGRvYyA9IGlGcmFtZS5jb250 ZW50RG9jdW1lbnQgPyBpRnJhbWUuY29udGVudERvY3VtZW50IDogZG9jdW1lbnQu ZnJhbWVzKGlGcmFtZS5pZCkuZG9jdW1lbnQ7IC8vIFczQyA6IElFCiAgICAgICAg aWYgKGlGcmFtZS5jYWxsQmFjaykgaUZyYW1lLmNhbGxCYWNrKGRvYyk7CiAgICAg ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChpRnJhbWUuaWQpKTsKICAgIH0KCiAgICB2YXIgaUZyYW1lID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICBhZGRMaXN0ZW5lcihpRnJh bWUsICJsb2FkIiwgX3JlY2VpdmVTZXJ2ZXJSZXNwb25zZSk7CiAgICBpRnJhbWUu c2V0QXR0cmlidXRlKCJpZCIsICJtc2dGcmFtZSIgKyBuZXcgRGF0ZSgpLmdldFRp bWUoKSk7ICAgLy8gc28gSUUgY2FuIHJldHJpdmUgZG9jdW1lbnQKICAgIGlGcmFt ZS5zZXRBdHRyaWJ1dGUoInNyYyIsIHVybCk7CiAgICBpRnJhbWUuc2V0QXR0cmli dXRlKCJzdHlsZSIsICJkaXNwbGF5Om5vbmUiKTsKICAgIGlmIChjYWxsQmFjaykg aUZyYW1lLmNhbGxCYWNrID0gY2FsbEJhY2s7CiAgICBkb2N1bWVudC5ib2R5LmFw cGVuZENoaWxkKGlGcmFtZSk7Cn0KCi8qKgogIGNvcHkgaW5uZXJIVE1MIG9mIHNy YyBlbGVtZW50IHRvIGlubmVySFRNTCBvZiB0YXJnZXQgZWxlbWVudAoqLwpmdW5j dGlvbiBjb3B5SW5uZXJIdG1sKHNyYywgdGFyZ2V0KSB7CiAgICB2YXIgZG9tU3Vw cG9ydGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgPyB0cnVlIDogZmFsc2U7 CiAgICB2YXIgc2UgPSAoZG9tU3VwcG9ydGVkICYmIHR5cGVvZiBzcmMgPT0gInN0 cmluZyIpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3JjKSA6IHNyYzsKICAg IHZhciB0ZSA9IChkb21TdXBwb3J0ZWQgJiYgdHlwZW9mIHRhcmdldCA9PSAic3Ry aW5nIikgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpIDogdGFyZ2V0 OwogICAgaWYgKHNlLmlubmVySFRNTCAmJiB0ZS5pbm5lckhUTUwpIHRlLmlubmVy SFRNTCA9IHNlLmlubmVySFRNTDsKfQovKioKIGZpbHRlciBzZWxlY3Qgb3B0aW9u cywgb3B0aW9ucyB0aGF0IGRvIG5vdCBjb250YWluIGZpbHRlciB0ZXh0IGFyZSBy ZW1vdmVkCiBpbiBmaXJzdCB1c2UsIG9yaWdpbmFsIHNlbGVjdCBvcHRpb25zIGFy ZSBiYWNrZWQgdXAgYXMgYXR0cmlidXRlIG9wdGlvbnNDb3B5CiovCmZ1bmN0aW9u IGZpbHRlclNlbGVjdChzZWxlY3RJZCwgdmFsdWUpIHsKICB2YXIgc2VsZWN0Owog IGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAmJiAoc2VsZWN0ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpKSAmJiBzZWxlY3Qub3B0aW9ucykg ewogICAgaWYgKCFzZWxlY3Qub3B0aW9uc0NvcHkpIHsKICAgICAgc2VsZWN0Lm9w dGlvbnNDb3B5ID0gbmV3IEFycmF5KCk7CiAgICAgIHNlbGVjdC5vcHRpb25UZXh0 cyA9IG5ldyBBcnJheSgpOwogICAgICBmb3IgKHZhciBpPTA7IGk8c2VsZWN0Lm9w dGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgb3B0ID0gc2VsZWN0Lm9w dGlvbnNbaV07CiAgICAgICAgc2VsZWN0Lm9wdGlvbnNDb3B5W2ldID0gb3B0Owog ICAgICAgIHNlbGVjdC5vcHRpb25UZXh0c1tpXSA9IG9wdC50ZXh0LnRvTG93ZXJD YXNlKCk7CiAgICAgIH0KICAgIH0KICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNh c2UoKTsKICAgIHZhciBhbGxUZXh0cyA9IHNlbGVjdC5vcHRpb25UZXh0czsKICAg IHZhciBkaXNwbGF5T3B0aW9ucyA9IHNlbGVjdC5vcHRpb25zOwogICAgdmFyIGNv dW50ID0gZGlzcGxheU9wdGlvbnMubGVuZ3RoID0gMDsKICAgIGZvciAodmFyIGk9 MDsgaSA8IGFsbFRleHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChhbGxUZXh0 c1tpXS5pbmRleE9mKHZhbHVlKSAhPSAtMSkgewogICAgICAgIHZhciBvcHRpb24g PSBzZWxlY3Qub3B0aW9uc0NvcHlbaV07CiAgICAgICAgZGlzcGxheU9wdGlvbnNb Y291bnQrK10gPSBvcHRpb247CiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gb3B0 aW9uLnRleHQgPT0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIGlmIChjb3VudCA9 PSAxKSBkaXNwbGF5T3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7CiAgfQp9Cgpm dW5jdGlvbiBwb3B1cEVsZW1lbnQoZWwsIGFuY2hvciwgd2luZG93UGFyYW1zKSB7 CiAgICBpZiAodHlwZW9mIGVsID09ICJzdHJpbmciKSB7IC8vIGVsIGlzIGlkCiAg ICAgICAgZWwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQpID8gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoZWwpIDoKICAgICAgICAgICAgIChkb2N1bWVudC5hbGwp ID8gZG9jdW1lbnQuYWxsW2VsXSA6IGZhbHNlOwogICAgfQogICAgaWYgKGVsKSB7 CiAgICAgICAgdmFyIHRtcDsKICAgICAgICBpZiAoZWwucG9wdXBXaW5kb3cgJiYg IWVsLnBvcHVwV2luZG93LmNsb3NlZCkgewogICAgICAgICAgICBlbC5wb3B1cFdp bmRvdy5mb2N1cygpOwogICAgICAgICAgICB0bXAgPSBlbC5wb3B1cFdpbmRvdy5k b2N1bWVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZighd2luZG93 UGFyYW1zKSB3aW5kb3dQYXJhbXMgPSB7fTsKICAgICAgICAgICAgZWwucG9wdXBX aW5kb3cgPSB3aW5kb3cub3BlbignJywKICAgICAgICAgICAgICAgIHdpbmRvd1Bh cmFtcy5uYW1lP3dpbmRvd1BhcmFtcy5uYW1lOicnLAogICAgICAgICAgICAgICAg d2luZG93UGFyYW1zLmZlYXR1cmVTdHJpbmc/d2luZG93UGFyYW1zLmZlYXR1cmVT dHJpbmc6J3Jlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMsd2lkdGg9NjAwLGhl aWdodD01MDAnKTsKICAgICAgICAgICAgdG1wID0gZWwucG9wdXBXaW5kb3cuZG9j dW1lbnQ7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8aHRtbD48aGVhZD48dGl0 bGU+Jytkb2N1bWVudC50aXRsZSsnPC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9j c3MiPicpOwogICAgICAgICAgICB2YXIgc3R5bGVTaGVldHMgPSBkb2N1bWVudC5z dHlsZVNoZWV0czsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHN0eWxlU2hl ZXRzICYmIGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAg ICAgICAgdmFyIGNzcyA9IHN0eWxlU2hlZXRzLml0ZW0oaSk7CiAgICAgICAgICAg ICAgICBpZiAoY3NzLmNzc1RleHQpIHRtcC53cml0ZWxuKGNzcy5jc3NUZXh0KTsK ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBj c3NSdWxlcyA9IGNzcy5ydWxlcyA/IGNzcy5ydWxlcyA6IGNzcy5jc3NSdWxlczsK ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgY3NzUnVsZXMgJiYg aiA8IGNzc1J1bGVzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgIHRtcC53cml0ZWxuKGNzc1J1bGVzLml0ZW0oaikuY3NzVGV4dCk7CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8L3N0eWxlPjwvaGVhZD48Ym9keSBp ZD0iJyArIGVsLmlkICsgJyI+Jyk7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKGVs LmlubmVySFRNTCk7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8L2JvZHk+PC9o dG1sPicpOwogICAgICAgICAgICB0bXAuY2xvc2UoKTsKICAgICAgICB9CiAgICAg ICAgaWYgKGFuY2hvcikgewogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gKHRtcC5n ZXRFbGVtZW50QnlJZCkgPyB0bXAuZ2V0RWxlbWVudEJ5SWQoYW5jaG9yKSA6CiAg ICAgICAgICAgICAgICAodG1wLmFsbCkgPyB0bXAuYWxsW2FuY2hvcl0gOiBmYWxz ZTsKICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgaWYg KHRhcmdldC5zY3JvbGxJbnRvVmlldykgdGFyZ2V0LnNjcm9sbEludG9WaWV3KCk7 CiAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cuc2Nyb2xsICYmIHRhcmdl dC5vZmZzZXRUb3ApIGVsLnBvcHVwV2luZG93LnNjcm9sbCgwLCB0YXJnZXQub2Zm c2V0VG9wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KfQoKLyoqCW1hcmtz IGFsbCBjaGVjayBib3ggKi8KZnVuY3Rpb24gbWFya0FsbENoZWNrYm94ZXMoYUZv cm0sIGFOYW1lUHJlZml4LCBhQ2hlY2tlZCkKewoJdmFyIGVsbXRzID0gYUZvcm0u ZWxlbWVudHM7Cglmb3IgKHZhciBpPTA7IGk8ZWxtdHMubGVuZ3RoOyBpKyspCgkJ aWYgKChlbG10c1tpXS50eXBlID09ICJjaGVja2JveCIpICYmCgkJCShlbG10c1tp XS5uYW1lLmluZGV4T2YoYU5hbWVQcmVmaXgpID09IDApKQoJCQllbG10c1tpXS5j aGVja2VkID0gYUNoZWNrZWQ7Cn0KCmZ1bmN0aW9uIHN1Ym1pdE11bHRpQXJ0aWNs ZXMoYUZvcm0sIGFjdGlvbiwgYU1hcmthbGwsIGVycm9yTWVzc2FnZSkgewogICAg dmFyIGhhc01hcmtlZCA9IGZhbHNlOwogICAgdmFyIGVsbXRzID0gYUZvcm0uZWxl bWVudHM7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsbXRzLmxlbmd0aDsgaSsr KSB7CgkJaWYgKChlbG10c1tpXS5uYW1lID09ICJkb2kiKSAmJgoJCQkoZWxtdHNb aV0udHlwZSA9PSAiY2hlY2tib3giKSAmJgoJCQkoZWxtdHNbaV0uY2hlY2tlZCkp IHsKCQkJaGFzTWFya2VkID0gdHJ1ZTsKCQl9CiAgICB9CgogICAgaWYgKCFoYXNN YXJrZWQpIHsKCQlpZiAoYU1hcmthbGwpIHsKCQkJbWFya0FsbENoZWNrYm94ZXMo YUZvcm0sICJkb2kiLCB0cnVlKTsKCQl9IGVsc2UgewoJCQlhbGVydChlcnJvck1l c3NhZ2UgPyBlcnJvck1lc3NhZ2UgOiAiUGxlYXNlIGNoZWNrIGF0IGxlYXN0IG9u ZSBhcnRpY2xlLiIpOwogICAgCSAgICByZXR1cm47CgkJfQoJfQoKCWZvciAodmFy IGkgPSAwOyBpIDwgZWxtdHMubGVuZ3RoOyBpKyspIHsKCQlpZiAoKGVsbXRzW2ld Lm5hbWUgPT0gImRvaSIpICYmCgkJCShlbG10c1tpXS50eXBlICE9ICJjaGVja2Jv eCIpKSB7CgkJCWVsbXRzW2ldLm5hbWUgPSAieGRvaSI7CgkJfQoJfQoKCWlmIChh Rm9ybS5nZXRBdHRyaWJ1dGVOb2RlKSB7CgkJYUZvcm0uZ2V0QXR0cmlidXRlTm9k ZSgiYWN0aW9uIikubm9kZVZhbHVlID0gYWN0aW9uOwoJfSBlbHNlIHsKCQlhRm9y bS5hY3Rpb24gPSBhY3Rpb247Cgl9CiAgICBhRm9ybS5tZXRob2QgPSAicG9zdCI7 CiAgICBhRm9ybS5zdWJtaXQoKTsKfQoKZnVuY3Rpb24gc2V0Q2hlY2tXaGVuRGVm aW5lKGFDYngsIGFTdGF0ZSkKewoJaWYgKGFDYngpIHsKCQlhQ2J4LmNoZWNrZWQg PSBhU3RhdGU7Cgl9Cn0KCi8vIC0tLSBzaWRlIHNmeCBsaW5rcyAtLS0KLy8KZnVu Y3Rpb24gZ2VuU2lkZUNpdGF0aW9uKGRiaWQsIGxpbmtvdXRVcmwsIGRpc3BsYXkp IHsKCWdlblNpZGUoJ2NpdGF0aW9uJywgZGJpZCwgbGlua291dFVybCwgZGlzcGxh eSk7Cn0KZnVuY3Rpb24gZ2VuU2lkZVF1aWNrU2VhcmNoKGRiaWQsIHZhbHVlLCBk aXNwbGF5KSB7CglnZW5TaWRlKCdxdWlja3NlYXJjaCcsIGRiaWQsICcnLCBkaXNw bGF5LCAnJywgJycsICcnLCB2YWx1ZSk7Cn0KZnVuY3Rpb24gZ2VuU2lkZVJlbGF0 ZWQoZGJpZCwgbGlua291dFVybCwgZGlzcGxheSkgewoJZ2VuU2lkZSgncmVsYXRl ZCcsIGRiaWQsIGxpbmtvdXRVcmwsIGRpc3BsYXkpOwp9CgovLyAtLS0gcG9wdXAg LS0tCi8vCi8qRnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBwb3B1cCB3aW5kb3csIHdp dGggcGFyYW1zIHRvIHBhc3MgdG8gZGlzcGF0Y2hlciAqLwpmdW5jdGlvbiBwb3B1 cChjaXRhcnQsIGlkLCBkb2ksIHB0eXBlLCBhcmVhKSB7Cglwb3B1cFJlZihjaXRh cnQsIGlkLCBkb2ksIHB0eXBlLCBhcmVhLCA2MDAsIDUwMCk7Cn0KCmZ1bmN0aW9u IHBvcHVwRnVsbChpZCwgZG9pLCBwdHlwZSwgYXJlYSwgd2lkdGgsIGhlaWdodCkg ewogICAgdmFyIHBvcHVwVVJMID0gIi9hY3Rpb24vc2hvd0Z1bGxQb3B1cD9pZD0i ICsgaWQgKyAiJmRvaT0iICsgZG9pOwogICAgaWYgKGFyZWEpIHBvcHVwVVJMICs9 ICImYXJlYT0iICsgYXJlYTsKICAgIGlmIChwdHlwZSkgcHR5cGUgPSBwdHlwZS5y ZXBsYWNlKC9cVy9nLCAnJyk7CiAgICB2YXIgd2lubmFtZSA9IHB0eXBlID8gcHR5 cGUgOiAncG9wdXBSZWYnOwoJdmFyIG4gPSB3aW5kb3cub3Blbihwb3B1cFVSTCwg d2lubmFtZSwgJ3Jlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMsd2lkdGg9Jyt3 aWR0aCsnLGhlaWdodD0nK2hlaWdodCk7CgluLm1vdmVUbygxMCwxMCk7CgluLmZv Y3VzKCk7Cn0KZnVuY3Rpb24gcG9wdXBSZWYoY2l0YXJ0LCBpZCwgZG9pLCBwdHlw ZSwgYXJlYSwgd2lkdGgsIGhlaWdodCkgewogICAgdmFyIHBvcHVwVVJMID0gIi9h Y3Rpb24vc2hvd1BvcHVwP2NpdGlkPSIgKyBjaXRhcnQgKyAiJmlkPSIgKyBpZCAr ICImZG9pPSIgKyBkb2k7CiAgICBpZiAoYXJlYSkgcG9wdXBVUkwgKz0gIiZhcmVh PSIgKyBhcmVhOwogICAgaWYgKHB0eXBlKSBwdHlwZSA9IHB0eXBlLnJlcGxhY2Uo L1xXL2csICcnKTsKICAgIHZhciB3aW5uYW1lID0gcHR5cGUgPyBwdHlwZSA6ICdw b3B1cFJlZic7Cgl2YXIgbiA9IHdpbmRvdy5vcGVuKHBvcHVwVVJMLCB3aW5uYW1l LCAncmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcyx3aWR0aD0nK3dpZHRoKycs aGVpZ2h0PScraGVpZ2h0KTsKCW4ubW92ZVRvKDEwLDEwKTsKCW4uZm9jdXMoKTsK fQoKZnVuY3Rpb24gcG9wdXBIZWxwNTUwKGFVcmwpCnsKCXBvcHVwSGVscFgoYVVy bCwgIndpZHRoPTU1MCxoZWlnaHQ9NTQwLHRvcD0xMCxsZWZ0PTUwLHRvb2xiYXI9 MCxtZW51YmFyPTAscmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcyIpOwp9CmZ1 bmN0aW9uIHBvcHVwSGVscDU4MChhVXJsKQp7Cglwb3B1cEhlbHBYKGFVcmwsICJ3 aWR0aD01ODAsaGVpZ2h0PTU0MCx0b3A9MTAsbGVmdD01MCx0b29sYmFyPTAsbWVu dWJhcj0wLHJlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMiKTsKfQpmdW5jdGlv biBwb3B1cEhlbHA2MjUoYVVybCkKewoJcG9wdXBIZWxwWChhVXJsLCAid2lkdGg9 NjI1LGhlaWdodD01NDAsdG9wPTEwLGxlZnQ9NTAsdG9vbGJhcj0wLG1lbnViYXI9 MCxyZXNpemFibGU9eWVzLHNjcm9sbGJhcnM9eWVzIik7Cn0KZnVuY3Rpb24gcG9w dXBIZWxwWChhVXJsLCBhV2luUHJvcHMpCnsKCXZhciB3aW5pZCA9IHdpbmRvdy5v cGVuKGFVcmwsInBvcHVwSGVscCIsYVdpblByb3BzKTsKICAgIGlmICh3aW5pZC5m b2N1cykgd2luaWQuZm9jdXMoKTsKICAgIHJldHVybiBmYWxzZTsKfQpmdW5jdGlv biBwb3B1cEhlbHAoYVVybCkKewoJcG9wdXBIZWxwNTgwKGFVcmwpOwp9CgovKiBG dW5jdGlvbiB0byBvcGVuIHVwIGEgbmV3IGJyb3dzZXIgd2luZG93LCB3aXRob3V0 IGEgbmF2aWdhdGlvbiBiYXIgKi8KZnVuY3Rpb24gcG9wdXBDb3ZlckltYWdlKHVy bCkKewogICAgdmFyIG5ld193aW5kb3c7CiAgICB2YXIgd2luZG93UHJvcGVydGll czsKICAgIHdpbmRvd1Byb3BlcnRpZXMgPSAid2lkdGg9NzUwLGhlaWdodD03MDAs dG9wPTMwLGxlZnQ9MjMwLHRvb2xiYXI9MCxtZW51YmFyPTAscmVzaXphYmxlPTEs c2Nyb2xsYmFycz15ZXMiOwogICAgaWYobmV3X3dpbmRvdz09bnVsbCkgewogICAg ICAgbmV3X3dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCxudWxsLHdpbmRvd1Byb3Bl cnRpZXMpOwogICAgfSBlbHNlIHsKICAgICAgIG5ld193aW5kb3cuZG9jdW1lbnQu cmVwbGFjZSh1cmwpOwogICAgfQp9CgovLyAtLS0gcXVpY2sgc2VhcmNoIC0tLQov LwovKioKICoJZ2V0IGFsbCB0aGUgZm9ybSBlbGVtZW50cyBhbmQgY2hlY2sgaWYg dGhlICJkYm5hbWUiCiAqCW1hcHMgdG8gc3BlY2lmaWQgdmFsdWUuCiAqLwpmdW5j dGlvbiBjaGVja0RiTmFtZShhRm9ybSwgYVZhbHVlKQp7Cgl2YXIgZWxlbWVudHMg PSBhRm9ybS5lbGVtZW50czsKCWZvciAodmFyIGk9MDsgaTxlbGVtZW50cy5sZW5n dGg7IGkrKykKCXsKCQl2YXIgZWxtdCA9IGVsZW1lbnRzW2ldOwoJCWlmIChlbG10 Lm5hbWUgPT0gImRibmFtZSIpCgkJewoJCQlpZiAoZWxtdC5vcHRpb25zKSB7CgkJ CQlpZiAoKGVsbXQudmFsdWUgPT0gYVZhbHVlKSB8fAoJCQkJCShlbG10Lm9wdGlv bnNbZWxtdC5zZWxlY3RlZEluZGV4XS52YWx1ZSA9PSBhVmFsdWUpKQoJCQkJCXJl dHVybiB0cnVlOwoJCQl9CgkJCWVsc2UgaWYgKGVsbXQuY2hlY2tlZCAmJiAoZWxt dC52YWx1ZSA9PSBhVmFsdWUpKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0K CX0KCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gb25BdXRob3JTZWFyY2hDbGlj ayhhRm9ybSkKewoJaWYgKCEgYUZvcm0pIHsKCQlhRm9ybSA9IGRvY3VtZW50LmRv Y3VtZW50LmZvcm1zWzBdOwoJfQoJdmFyIGVsbXRzID0gYUZvcm0uZWxlbWVudHM7 Cgl2YXIgYXV0aG9ycyA9IG5ldyBBcnJheSgpOwoJdmFyIGtleXdvcmRzID0gbmV3 IEFycmF5KCk7CglnZXRBdXRob3JzQW5kS2V5d29yZHMoYUZvcm0sIGF1dGhvcnMs IGtleXdvcmRzLCBmYWxzZSk7CglpZiAoY2hlY2tEYk5hbWUoYUZvcm0sICJtZWRs aW5lIikpIHsKCQlzaG93UHViTWVkU2VhcmNoKGF1dGhvcnMsIGtleXdvcmRzKTsK CX0gZWxzZSBpZiAoY2hlY2tEYk5hbWUoYUZvcm0sICJhZHMiKSkgewoJCXNob3dB ZHNTZWFyY2goYXV0aG9ycywga2V5d29yZHMpOwoJfSBlbHNlIGlmIChjaGVja0Ri TmFtZShhRm9ybSwgImNyb3NzcmVmIikpIHsKCQlzaG93Q3Jvc3NSZWZTZWFyY2go YXV0aG9ycywga2V5d29yZHMpOwoJfSBlbHNlIHsKCQl2YXIgdXJsID0gIi9hY3Rp b24vZG9TZWFyY2g/YWN0aW9uPXNlYXJjaEF1dGhvciI7CgkJZm9yICh2YXIgaT0w OyBpPGVsbXRzLmxlbmd0aDsgaSsrKSB7CgkJCWlmICghIGVsbXRzW2ldLm5hbWUp CgkJCQljb250aW51ZTsKCQkJdmFyIGFkZEVsbXQgPSBmYWxzZTsKCQkJaWYgKGVs bXRzW2ldLnR5cGUgPT0gImNoZWNrYm94IikKCQkJCWFkZEVsbXQgPSBlbG10c1tp XS5jaGVja2VkOwoJCQllbHNlCgkJCQlhZGRFbG10ID0gKGVsbXRzW2ldLnZhbHVl Lmxlbmd0aCA+IDApOwoJCQlpZiAoYWRkRWxtdCkKCQkJCXVybCArPSAiJiIgKyBl bG10c1tpXS5uYW1lICsgIj0iICsgZWxtdHNbaV0udmFsdWU7CgkJfQoJCXdpbmRv dy5sb2NhdGlvbiA9IHVybDsKCX0KfQoKLyoqCiAqCUBwYXJhbQlhQXV0aG9yQXJy YXkJYXJyYXkgc3RvcmVzIGFsbCBhdXRob3JzCiAqCUBwYXJhbQlhS2V5d29yZEFy cmF5CWFycmF5IHN0b3JlcyBhbGwga2V5d29yZHMKICovCmZ1bmN0aW9uIGdldEF1 dGhvcnNBbmRLZXl3b3JkcyhhRm9ybSwgYUF1dGhvckFycmF5LCBhS2V5d29yZEFy cmF5LCBhRm9yY2VBZGQpCnsKCXNldENoZWNrV2hlbkRlZmluZShhRm9ybS5zYXV0 aHVzZXJjYngsIHRydWUpOwoJc2V0Q2hlY2tXaGVuRGVmaW5lKGFGb3JtLmtleXVz ZXJjYngsIHRydWUpOwoKCXZhciBlbGVtZW50cyA9IGFGb3JtLmVsZW1lbnRzOwoJ dmFyIGNudEF1dGhvciA9IC0xOwoJdmFyIGNudEtleXdvcmQgPSAtMTsKCWZvciAo dmFyIGk9MDsgaTxlbGVtZW50cy5sZW5ndGg7IGkrKykKCXsKCQl2YXIgZWxtdCA9 IGVsZW1lbnRzW2ldOwoJCWlmICgoZWxtdC5uYW1lID09ICJzYXV0aGNieCIpIHx8 CgkJCShlbG10Lm5hbWUgPT0gInNhdXRodXNlcmNieCIpKQoJCXsKCQkJaWYgKGVs bXQubmFtZSA9PSAic2F1dGh1c2VyY2J4IikgewoJCQkJY250QXV0aG9yKys7CgkJ CX0KCQkJaWYgKGFGb3JjZUFkZCkgewoJCQkJZWxtdC5jaGVja2VkID0gdHJ1ZTsK CQkJfSBlbHNlIGlmICghIGVsbXQuY2hlY2tlZCkgewoJCQkJY29udGludWU7CgkJ CX0KCgkJCXZhciByZXN1bHQgPSBudWxsOwoJCQlpZiAoZWxtdC5uYW1lID09ICJz YXV0aHVzZXJjYngiKSB7CgkJCQl2YXIgc2F0ID0gYUZvcm0uc2F1dGh0ZXh0OwoJ CQkJcmVzdWx0ID0gc2F0Lmxlbmd0aCA/IHNhdFtjbnRBdXRob3JdLnZhbHVlIDog c2F0LnZhbHVlOwoJCQkJaWYgKHJlc3VsdCA9PSAiIikgewoJCQkJCWFGb3JtLnNh dXRodXNlcmNieC5jaGVja2VkID0gZmFsc2U7CgkJCQl9CgkJCX0gZWxzZSB7CgkJ CQlyZXN1bHQgPSBlbG10LnZhbHVlOwoJCQl9CgkJCWlmIChyZXN1bHQgIT0gIiIp IHsKCQkJCWFBdXRob3JBcnJheVthQXV0aG9yQXJyYXkubGVuZ3RoXSA9IHJlc3Vs dDsKCQkJfQoJCX0KCQllbHNlIGlmICgoZWxtdC5uYW1lID09ICJrZXljYngiKSB8 fAoJCQkJIChlbG10Lm5hbWUgPT0gImtleXVzZXJjYngiKSkKCQl7CgkJCWlmIChl bG10Lm5hbWUgPT0gImtleXVzZXJjYngiKSB7CgkJCQljbnRLZXl3b3JkKys7CgkJ CX0KCQkJaWYgKGFGb3JjZUFkZCkgewoJCQkJZWxtdC5jaGVja2VkID0gdHJ1ZTsK CQkJfSBlbHNlIGlmICghIGVsbXQuY2hlY2tlZCkgewoJCQkJY29udGludWU7CgkJ CX0KCgkJCXZhciByZXN1bHQgPSBudWxsOwoJCQlpZiAoZWxtdC5uYW1lID09ICJr ZXl1c2VyY2J4IikgewoJCQkJdmFyIGt3dCA9IGFGb3JtLmtleXRleHQ7CgkJCQly ZXN1bHQgPSBrd3QubGVuZ3RoID8ga3d0W2NudEtleXdvcmRdLnZhbHVlIDoga3d0 LnZhbHVlOwoJCQkJaWYgKHJlc3VsdCA9PSAiIikgewoJCQkJCWFGb3JtLmtleXVz ZXJjYnguY2hlY2tlZCA9IGZhbHNlOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJcmVz dWx0ID0gZWxtdC52YWx1ZTsKCQkJfQoJCQlpZiAocmVzdWx0ICE9ICIiKSB7CgkJ CQlhS2V5d29yZEFycmF5W2FLZXl3b3JkQXJyYXkubGVuZ3RoXSA9IHJlc3VsdDsK CQkJfQoJCX0KCX0KCS8vIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uLCBhZGQg dGhlbSBhbGwKCWlmICgoISBhRm9yY2VBZGQpICYmIChhQXV0aG9yQXJyYXkubGVu Z3RoPT0wICYmIGFLZXl3b3JkQXJyYXkubGVuZ3RoPT0wKSkgewoJCWdldEF1dGhv cnNBbmRLZXl3b3JkcyhhRm9ybSwgYUF1dGhvckFycmF5LCBhS2V5d29yZEFycmF5 LCB0cnVlKTsKCX0KfQoKZnVuY3Rpb24gZW5jb2RlTGlua091dFVybChhVXJsKQp7 Cgl2YXIgcmVzdWx0ID0gIiI7Cglmb3IgKHZhciBpPTA7IGk8YVVybC5sZW5ndGg7 IGkrKykgewoJCXZhciBlbmNvZGVkID0gYVVybC5jaGFyQXQoaSk7CgkJc3dpdGNo IChlbmNvZGVkKSB7CgkJCWNhc2UgJz8nOgoJCQljYXNlICcmJzoJZW5jb2RlZCA9 IGVzY2FwZShlbmNvZGVkKTsJYnJlYWs7CgkJCWRlZmF1bHQ6CS8vIGRvZXMgbm90 aGluZwoJCX0KCQlyZXN1bHQgKz0gZW5jb2RlZDsKCX0KCXJldHVybiByZXN1bHQ7 Cn0KCmZ1bmN0aW9uIHNob3dFeHRlcm5hbFNlYXJjaChhRGJJZCwgYVVybCkKewoJ cG9wdXBIZWxwKCIvc2VydmxldC9saW5rb3V0P3R5cGU9c2VhcmNoJmRiaWQ9Iith RGJJZCsiJnVybD0iK2VuY29kZUxpbmtPdXRVcmwoYVVybCkpOwp9CgovLyBwdWJt ZWQgdXJsIGZvcm1hdDoKLy8gaHR0cDovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Vu dHJlei9xdWVyeS5mY2dpCi8vICAgP2RvcHQ9RG9jU3VtJmNtZD1TZWFyY2gmZGI9 UHViTWVkCi8vICAgJnRlcm09QmhhdG5hZ2FyW0FVXStPUitCYWdjaGlbQVVdCi8v CmZ1bmN0aW9uIHNob3dQdWJNZWRTZWFyY2goYUF1dGhvcnMsIGFLZXl3b3JkcykK ewoJdmFyIHBtdXJsID0gImh0dHA6Ly93d3c0Lm5jYmkubmxtLm5paC5nb3YvUHVi TWVkLyI7CglpZiAoKGFBdXRob3JzLmxlbmd0aD4wKSB8fCAoYUtleXdvcmRzLmxl bmd0aD4wKSkKCXsKCQlwbXVybCA9ICJodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5n b3YvZW50cmV6L3F1ZXJ5LmZjZ2k/ZG9wdD1Eb2NTdW0mY21kPVNlYXJjaCZkYj1Q dWJNZWQmdGVybT0iOwoKCQlmb3IgKHZhciBpPTA7IGk8YUF1dGhvcnMubGVuZ3Ro OyBpKyspIHsKCQkJcG11cmwgKz0gYUF1dGhvcnNbaV0ucmVwbGFjZSgiLCIsIisi KTsKCQkJcG11cmwgKz0gIltBVV0iOwoJCQlpZiAoaSA8IGFBdXRob3JzLmxlbmd0 aC0xKSB7CgkJCQlwbXVybCArPSAiK09SKyI7CgkJCX0KCQl9CgoJCWlmICgoYUF1 dGhvcnMubGVuZ3RoPjApICYmIChhS2V5d29yZHMubGVuZ3RoPjApKSB7CgkJCXBt dXJsICs9ICIrT1IrIjsKCQl9CgoJCWZvciAodmFyIGk9MDsgaTxhS2V5d29yZHMu bGVuZ3RoOyBpKyspIHsKCQkJcG11cmwgKz0gYUtleXdvcmRzW2ldLnJlcGxhY2Uo IjoiLCIgIik7CgkJCWlmIChpIDwgYUtleXdvcmRzLmxlbmd0aC0xKSB7CgkJCQlw bXVybCArPSAiK09SKyI7CgkJCX0KCQl9Cgl9CglzaG93RXh0ZXJuYWxTZWFyY2go OCwgcG11cmwpOwp9CgovLyBhZHMgdXJsIGZvcm1hdDoKLy8gaHR0cDovL2Fkc2Fi cy5oYXJ2YXJkLmVkdS9jZ2ktYmluL25waC1hYnNfY29ubmVjdD9kYl9rZXk9QVNU Ci8vCSZzb3J0PVNDT1JFJnR0bF9zeW49WUVTJnZlcnNpb249MQovLwkmdHh0X3N5 bj1ZRVMmdHh0X2xvZ2ljPUFORCZ0ZXh0PWdhbGF4eSUwRCUwQXN0YXIlMEQlMEFv Y2VhbgovLwkmYXV0X3N5bj1ZRVMmYXV0X2xvZ2ljPUFORCYmYXV0aG9yPSZhdXRo b3I9amFjayUwRCUwQXNtaXRoCmZ1bmN0aW9uIHNob3dBZHNTZWFyY2goYUF1dGhv cnMsIGFLZXl3b3JkcykKewoJdmFyIGFkc3VybCA9ICJodHRwOi8vYWRzYWJzLmhh cnZhcmQuZWR1L2Fic3RyYWN0X3NlcnZpY2UuaHRtbCI7CglpZiAoKGFBdXRob3Jz Lmxlbmd0aD4wKSB8fCAoYUtleXdvcmRzLmxlbmd0aD4wKSkKCXsKCQlhZHN1cmwg PQoJCQkiaHR0cDovL2Fkc2Ficy5oYXJ2YXJkLmVkdS9jZ2ktYmluL25waC1hYnNf Y29ubmVjdD9kYl9rZXk9QVNUIiArCgkJCSImc29ydD1TQ09SRSZ0dGxfc3luPVlF UyZ2ZXJzaW9uPTEiICsKCQkJIiZ0eHRfc3luPVlFUyZ0eHRfbG9naWM9QU5EIiAr CgkJCSImYXV0X3N5bj1ZRVMmYXV0X2xvZ2ljPUFORCI7CgoJCWlmIChhQXV0aG9y cy5sZW5ndGggPiAwKSB7CgkJCWFkc3VybCArPSAiJmF1dGhvcj0iOwoJCQlmb3Ig KHZhciBpPTA7IGk8YUF1dGhvcnMubGVuZ3RoOyBpKyspIHsKCQkJCWFkc3VybCAr PSBhQXV0aG9yc1tpXS5yZXBsYWNlKCIsIiwiJTJDIik7CgkJCQlpZiAoaSA8IGFB dXRob3JzLmxlbmd0aC0xKSB7CgkJCQkJYWRzdXJsICs9ICIlMEQlMEEiOwoJCQkJ fQoJCQl9CgkJfQoJCWlmIChhS2V5d29yZHMubGVuZ3RoID4gMCkgewoJCQlhZHN1 cmwgKz0gIiZ0ZXh0PSI7CgkJCWZvciAodmFyIGk9MDsgaTxhS2V5d29yZHMubGVu Z3RoOyBpKyspIHsKCQkJCWFkc3VybCArPSBhS2V5d29yZHNbaV07CgkJCQlpZiAo aSA8IGFLZXl3b3Jkcy5sZW5ndGgtMSkgewoJCQkJCWFkc3VybCArPSAiJTBEJTBB IjsKCQkJCX0KCQkJfQoJCX0KCX0KCXNob3dFeHRlcm5hbFNlYXJjaCg2NCwgYWRz dXJsKTsKfQoKLy8geHJzIHVybCBmb3JtYXQ6Ci8vIGh0dHA6Ly93d3cuZ29vZ2xl LmNvbS9jb2JyYW5kP3Jlc3RyaWN0PWNyb3NzcmVmJnNhPVNlYXJjaCsKLy8JJnE9 JTIyc3RlbStjZWxsJTIyKyUyMnR5cGUrMSUyMiZjb2Y9QVdQSUQ6YmJkNmQwMWU5 YTUzMDkyMgpmdW5jdGlvbiBzaG93Q3Jvc3NSZWZTZWFyY2goYUF1dGhvcnMsIGFL ZXl3b3JkcykKewoJdmFyIHhyc3VybCA9ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20v Y29icmFuZD9yZXN0cmljdD1jcm9zc3JlZiZzYT1TZWFyY2grJmZpbHRlcj0wJnE9 IjsKCWlmICgoYUF1dGhvcnMubGVuZ3RoPjApIHx8IChhS2V5d29yZHMubGVuZ3Ro PjApKQoJewoJCXZhciBhcnJheSA9IFthQXV0aG9ycywgYUtleXdvcmRzXTsKCQlm b3IgKHZhciBpPTA7IGk8YXJyYXkubGVuZ3RoOyBpKyspIHsKCQkJZm9yICh2YXIg aj0wOyBqPGFycmF5W2ldLmxlbmd0aDsgaisrKSB7CgkJCQl4cnN1cmwgKz0gIiUy MiIrYXJyYXlbaV1bal0rIiUyMisiOwoJCQl9CgkJfQoJfQoJeHJzdXJsICs9ICIm Y29mPUFXUElEOmJiZDZkMDFlOWE1MzA5MjIiOwoJc2hvd0V4dGVybmFsU2VhcmNo KDE2LCB4cnN1cmwpOwp9CgovKioJY3Jvc3NyZWYgc2VhcmNoICovCmZ1bmN0aW9u IHN1Ym1pdFhyc1NlYXJjaChmcm0pCnsKCWlmICghIGZybSkgewoJCWZybSA9IGRv Y3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXTsKCX0KCXZhciB4cnN1cmwgPSAiaHR0 cDovL3d3dy5nb29nbGUuY29tL2NvYnJhbmQ/IiArCgkJCQkgInJlc3RyaWN0PSIg KyBmcm0ucmVzdHJpY3QudmFsdWUgKwoJCQkJICImcT0iICsgZnJtLnNlYXJjaFRl eHQudmFsdWUgKwoJCQkJICImZmlsdGVyPTAiICsKCQkJCSAiJnNhPVNlYXJjaCsi ICsKCQkJCSAiJmNvZj1BV1BJRDpiYmQ2ZDAxZTlhNTMwOTIyIjsKCgl2YXIgdXJs ID0gIi9zZXJ2bGV0L2xpbmtvdXQ/dHlwZT1zZWFyY2gmZGJpZD0xNiZ1cmw9Iitl bmNvZGVMaW5rT3V0VXJsKHhyc3VybCk7Cgl2YXIgd2lucHJvcHMgPSAid2lkdGg9 NzUwLGhlaWdodD03MDAsdG9wPTEwLGxlZnQ9MjAsdG9vbGJhcj0xLG1lbnViYXI9 MSxyZXNpemFibGU9eWVzLHNjcm9sbGJhcnM9eWVzLHN0YXR1cz15ZXMiOwoJdmFy IHdpbiA9IHdpbmRvdy5vcGVuKHVybCwgbnVsbCwgd2lucHJvcHMpOwoJaWYgKHdp biAhPSBudWxsKSB7CgkJd2luLmZvY3VzKCk7Cgl9CglyZXR1cm4gZmFsc2U7Cn0K CnZhciBzZWFyY2hfaGlnaGxpZ2h0ID0gdHJ1ZTsKZnVuY3Rpb24gaGlnaGxpZ2h0 KCkKewoJdmFyIGZyb20gPSBzZWFyY2hfaGlnaGxpZ2h0ID8gInNlYXJjaFRlcm0i IDogInNlYXJjaE5vbmUiOwoJdmFyIHRvICAgPSBzZWFyY2hfaGlnaGxpZ2h0ID8g InNlYXJjaE5vbmUiIDogInNlYXJjaFRlcm0iOwoJdmFyIGVsbXRzID0gZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKCWZvciAodmFyIGk9MDsg aTxlbG10cy5sZW5ndGg7IGkrKyl7CgkJdmFyIG5vZGUgPSBlbG10cy5pdGVtKGkp OwoJCWZvciAodmFyIGo9MDsgajxub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKysp IHsKCQkJdmFyIGl0ZW0gPSBub2RlLmF0dHJpYnV0ZXMuaXRlbShqKTsKCQkJaWYg KChpdGVtLm5vZGVOYW1lID09ICdjbGFzcycpICYmCgkJCQkoaXRlbS5ub2RlVmFs dWUuaW5kZXhPZihmcm9tKSA9PSAwKSkgewoJCQkJbm9kZS5jbGFzc05hbWUgPSB0 byArIGl0ZW0ubm9kZVZhbHVlLnN1YnN0cmluZyhmcm9tLmxlbmd0aCk7CgkJCX0K CQl9Cgl9CglzZWFyY2hfaGlnaGxpZ2h0ID0gISBzZWFyY2hfaGlnaGxpZ2h0Owp9 CnZhciBlbWFpbFJlZ3ggPSAvXihbYS16QS1aMC05X1wuXC1dKStcQCgoW2EtekEt WjAtOVwtXSkrXC4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsKZnVuY3Rpb24gaXNF bWFpbChlbWFpbCkgewogICAgaWYgKGVtYWlsLnZhbHVlKSBlbWFpbCA9IGVtYWls LnZhbHVlOyAgIC8vIGlzIGZvcm0gZmllbGQKICAgIHJldHVybiBlbWFpbFJlZ3gu dGVzdChlbWFpbCk7Cn0KZnVuY3Rpb24gY291bnRTZWxlY3RlZChzZWxlY3QpIHsK ICAgIHZhciByZXN1bHQgPSAwOwogICAgaWYgKHNlbGVjdC5vcHRpb25zKSBmb3Ig KHZhciBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKSBpZiAo c2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQpIHJlc3VsdCsrOwogICAgcmV0dXJu IHJlc3VsdDsKfQpmdW5jdGlvbiBjb3VudENoZWNrZWQoZm9ybSwgZmllbGROYW1l KSB7CiAgICB2YXIgcmVzdWx0ID0gMDsKICAgIHZhciBpdGVtcyA9IGZvcm0uZWxl bWVudHNbZmllbGROYW1lXTsKICAgIGlmIChpdGVtcykgZm9yICh2YXIgaSA9IDA7 IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgaWYgKGl0ZW1zW2ldLmNoZWNrZWQpIHJl c3VsdCsrOwogICAgcmV0dXJuIHJlc3VsdDsKfQpmdW5jdGlvbiBnZXRDb29raWUo bmFtZSkgewogICAgbmFtZSA9IG5hbWUgKyAiPSI7CiAgICB2YXIgY29va2llcyA9 IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOwogICAgZm9yICh2YXIgaSA9IDA7 IGkgPCBjb29raWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGMgPSBjb29r aWVzW2ldOwogICAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PSAnICcpIGMgPSBj LnN1YnN0cmluZygxKTsvLyBMVHJpbQogICAgICAgIGlmIChjLmluZGV4T2YobmFt ZSkgPT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoKTsKICAgIH0K ICAgIHJldHVybiBudWxsOwp9CmZ1bmN0aW9uIHN5bmNTZXNzaW9uKHNpZCwgYXRj b29raWUpIHsKICAgIGlmIChzaWQpIHsKICAgICAgICB2YXIgdXJsID0gbG9jYXRp b24uaG9zdDsKICAgICAgICB1cmwgPSB1cmwuaW5kZXhPZigic3RhZ2luZy4iKSA9 PSAwID8gdXJsLnN1YnN0cmluZyg4KSA6ICgic3RhZ2luZy4iICsgdXJsKTsKICAg ICAgICB1cmwgPSAiaHR0cDovLyIgKyB1cmwgKyAiL3Nlc3Npb24uanNwIiArICI/ SlNFU1NJT05JRD0iICsgc2lkOwogICAgICAgIGlmIChhdGNvb2tpZSkgdXJsICs9 ICImYXRjb29raWU9IiArIGF0Y29va2llOwogICAgICAgIHdpbmRvdy5fc2lkSW1n ID0gbmV3IEltYWdlOwogICAgICAgIHdpbmRvdy5fc2lkSW1nLnNyYyA9IHVybDsK ICAgIH0KfQoKZnVuY3Rpb24gY29uZmlybUFjdGlvbih1cmwsIG1zZykgewogICAg aWYgKGNvbmZpcm0obXNnKSkgZG9jdW1lbnQubG9jYXRpb24gPSB1cmw7Cn0KCmZ1 bmN0aW9uIG1zd29yZDJodG1sKHN0cikKewogICAgaWYgKHN0ciA9PSBudWxsIHx8 IHN0ci5yZXBsYWNlKC9ccy9nLCAiIikgPT0gIiIpIHsKICAgICAgICByZXR1cm4g c3RyOwogICAgfQogICAgdmFyIGFycmF5ID0gWwogICAgICAgIDgyMTEsICAgIiZu ZGFzaDsiLAogICAgICAgIDgyMTIsICAgIiZtZGFzaDsiLAogICAgICAgIDgyMTYs ICAgIiZsc3F1bzsiLAogICAgICAgIDgyMTcsICAgIiZyc3F1bzsiLAogICAgICAg IDgyMTgsICAgIiZzYnF1bzsiLAogICAgICAgIDgyMTksICAgIiYjeDIwMWI7IiwK ICAgICAgICA4MjIwLCAgICImbGRxdW87IiwKICAgICAgICA4MjIxLCAgICImcmRx dW87IiwKICAgICAgICA4MjIyLCAgICImYmRxdW87IiwKICAgICAgICA4MjIzLCAg ICImI3gyMDFmOyIsCiAgICBdOwogICAgZm9yICh2YXIgaT0wOyBpPGFycmF5Lmxl bmd0aDsgaSs9MikgewogICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdF eHAoU3RyaW5nLmZyb21DaGFyQ29kZShhcnJheVtpXSksImciKSxhcnJheVtpKzFd KTsKICAgIH0KICAgIHJldHVybiBzdHI7Cn0KLy8gcmVxdWlyZXMgL3N3Zm9iamVj dC5qcwpmdW5jdGlvbiBhZGRGbGFzaE1vdmllKGlkLCBmbHYpIHsKICAgIHZhciBz byA9IG5ldyBTV0ZPYmplY3QoJy9mbHZwbGF5ZXIuc3dmJyxpZCwnMzUyJywnMjg4 JywnNycpOwoJc28uYWRkUGFyYW0oJ2FsbG93ZnVsbHNjcmVlbicsJ2ZhbHNlJyk7 Cglzby5hZGRWYXJpYWJsZSgnZmlsZScsZmx2KTsKCXNvLmFkZFZhcmlhYmxlKCd0 eXBlJywnZmx2Jyk7CiAgICBpZiAobmF2aWdhdG9yLmFwcE5hbWUuaW5kZXhPZigi TWljcm9zb2Z0IikgIT0gLTEpIHsKICAgICAgICAvLyB0aGlzIGlzIG5lZWRlZCBm b3IgSUUsIGJ1dCBpIGJyZWFrcyBHZWNrbwogICAgICAgIHNvLmFkZFZhcmlhYmxl KCd3aWR0aCcsJzM1MicpOwogICAgICAgIHNvLmFkZFZhcmlhYmxlKCdoZWlnaHQn LCcyODgnKTsKICAgIH0KICAgIHNvLndyaXRlKGlkKTsKfQo= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/script.js Content-Transfer-Encoding: Base64 Ly8gQ29tbW9ubHkgdXNlZCBmdW5jdGlvbnMgdGhhdCBkZXBlbmRzIG9uIGxheW91 dCBvZiBfc3R5bGUyIHRlbXBsYXRlCndpbmRvdy5nZXRTaXplPWZ1bmN0aW9uKCkg ewogIGlmICh0eXBlb2Yod2luZG93LmlubmVyV2lkdGgpPT0nbnVtYmVyJykgcmV0 dXJuIHt3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5u ZXJIZWlnaHR9CiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAoZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpKSByZXR1cm4ge3dpZHRoOmRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgaGVpZ2h0OiBkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fQogIGlmIChkb2N1bWVudC5i b2R5ICYmIChkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJv ZHkuY2xpZW50SGVpZ2h0KSkgcmV0dXJuIHt3aWR0aDpkb2N1bWVudC5ib2R5LmNs aWVudFdpZHRoLCBoZWlnaHQ6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0fQog IHJldHVybiB7d2lkdGg6MCxoZWlnaHQ6MH0KfQp2YXIgcmVzaXplVGltZXI7CmZ1 bmN0aW9uIGRvUmVzaXplKCkgewogIGlmIChyZXNpemVUaW1lcikgY2xlYXJUaW1l b3V0KHJlc2l6ZVRpbWVyKTsKICByZXNpemVUaW1lcj1zZXRUaW1lb3V0KCJjb250 ZW50UmVzaXplKCApIiwgMTAwKTsKICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiBk b1Jlc2l6ZUhlaWdodCgpIHsKICBpZiAocmVzaXplVGltZXIpIGNsZWFyVGltZW91 dChyZXNpemVUaW1lcik7CiAgcmVzaXplVGltZXI9c2V0VGltZW91dCgiaGVpZ2h0 UmVzaXplKCApIiwgMTAwKTsKICByZXR1cm4gdHJ1ZTsKfQoKdmFyIG1pbkNvbnRl bnRXaWR0aCA9IDQ1MDsKdmFyIG1pbkNvbnRlbnRIZWlnaHQgPSA1MzA7CnZhciBj b250ZW50SG9yaXpvbnRhbE1hcmdpbnMgPSAoZG9jdW1lbnQuYWxsKSA/IDM3NSA6 IDM4OTsKdmFyIGNvbnRlbnRWZXJ0aWNhbE1hcmdpbnMgPSAwOwp2YXIgcmVzaXpl QWdhaW49dHJ1ZTsKdmFyIGlzR2Vja28gPSBuYXZpZ2F0b3IudXNlckFnZW50LnRv TG93ZXJDYXNlKCkuaW5kZXhPZigiZ2Vja28iKSArIDE7IC8vIDB+ZmFsc2UKZnVu Y3Rpb24gY29udGVudFJlc2l6ZSgpIHsKICB2YXIgd3M9d2luZG93LmdldFNpemUo KTsKICB2YXIgaD13cy5oZWlnaHQKICB2YXIgdz13cy53aWR0aAogIGlmKHcgJiYg aCkgewogICAgaCAtPSBjb250ZW50VmVydGljYWxNYXJnaW5zOwogICAgaWYgKGg8 bWluQ29udGVudEhlaWdodCkgaCA9IG1pbkNvbnRlbnRIZWlnaHQ7CiAgICB3IC09 IGNvbnRlbnRIb3Jpem9udGFsTWFyZ2luczsKICAgIGlmICh3PG1pbkNvbnRlbnRX aWR0aCkgdyA9IG1pbkNvbnRlbnRXaWR0aDsKICAgIHZhciBzdHlsZT1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnQ29udGVudCcpLnN0eWxlOwogICAgc3R5bGUuaGVp Z2h0PWgrInB4IjsKICAgIHN0eWxlLndpZHRoPXcrInB4IjsKICAgIGlmIChkb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSkgewogICAgICAgIHN0eWxlPWRvY3Vt ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JykuaXRlbSgwKS5zdHlsZTsK ICAgICAgICBzdHlsZS5oZWlnaHQ9aCsicHgiOwogICAgfQogICAgaWYgKHJlc2l6 ZUFnYWluKSB7CiAgICAgIHJlc2l6ZUFnYWluPWZhbHNlOwogICAgICBzZXRUaW1l b3V0KCJjb250ZW50UmVzaXplKCkiLCA1MCk7CiAgICB9IGVsc2UgewogICAgICBy ZXNpemVBZ2Fpbj10cnVlOyAgIC8vIGZvciBuZXh0IHJ1bgogICAgICBpZiAobG9j YXRpb24uaGFzaCkgewogICAgICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgICBs b2NhdGlvbi5oYXNoID0gbG9jYXRpb24uaGFzaDsgLy8gc2Nyb2xsIHRvIGFuY2hv ciwgSUUgZG9lc24ndCBuZWVkIGl0LCBPcGVyYSBpcyBicm9rZW4KICAgICAgICB9 IGVsc2UgaWYgKGRvY3VtZW50LmFuY2hvcnMpIHsgICAgICAgICAgICAgICAgLy8g bWF5IGhlbHAgYnJvd3NlcnMgd2l0aCBhbmNob3JzIGNvbGxlY3Rpb24gc3VwcG9y dCAoT3BlcmEuLi4pCiAgICAgICAgICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuYW5j aG9yc1tsb2NhdGlvbi5oYXNoXTsKICAgICAgICAgIGlmIChhbmNob3IgJiYgYW5j aG9yLnNjcm9sbEludG9WaWV3KSBhbmNob3Iuc2Nyb2xsSW50b1ZpZXcoKTsKICAg ICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rp b24gaGVpZ2h0UmVzaXplKCkgewogIHZhciB3cz13aW5kb3cuZ2V0U2l6ZSgpOwog IHZhciBoPXdzLmhlaWdodAogIGlmKGgpIHsKICAgIGggLT0gY29udGVudFZlcnRp Y2FsTWFyZ2luczsKICAgIGlmIChoPG1pbkNvbnRlbnRIZWlnaHQpIGggPSBtaW5D b250ZW50SGVpZ2h0OwogICAgdmFyIHN0eWxlPWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdDb250ZW50Jykuc3R5bGU7CiAgICBzdHlsZS5oZWlnaHQ9aCsicHgiOwog ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKSB7CiAgICAgICAg c3R5bGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKS5pdGVt KDApLnN0eWxlOwogICAgICAgIHN0eWxlLmhlaWdodD1oKyJweCI7CiAgICB9CiAg ICBpZiAocmVzaXplQWdhaW4pIHsKICAgICAgcmVzaXplQWdhaW49ZmFsc2U7CiAg ICAgIHNldFRpbWVvdXQoImhlaWdodFJlc2l6ZSgpIiwgNTApOwogICAgfSBlbHNl IHsKICAgICAgcmVzaXplQWdhaW49dHJ1ZTsgICAvLyBmb3IgbmV4dCBydW4KICAg ICAgaWYgKGxvY2F0aW9uLmhhc2gpIHsKICAgICAgICBpZiAoaXNHZWNrbykgewog ICAgICAgICAgbG9jYXRpb24uaGFzaCA9IGxvY2F0aW9uLmhhc2g7IC8vIHNjcm9s bCB0byBhbmNob3IsIElFIGRvZXNuJ3QgbmVlZCBpdCwgT3BlcmEgaXMgYnJva2Vu CiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5hbmNob3JzKSB7ICAgICAgICAg ICAgICAgIC8vIG1heSBoZWxwIGJyb3dzZXJzIHdpdGggYW5jaG9ycyBjb2xsZWN0 aW9uIHN1cHBvcnQgKE9wZXJhLi4uKQogICAgICAgICAgdmFyIGFuY2hvciA9IGRv Y3VtZW50LmFuY2hvcnNbbG9jYXRpb24uaGFzaF07CiAgICAgICAgICBpZiAoYW5j aG9yICYmIGFuY2hvci5zY3JvbGxJbnRvVmlldykgYW5jaG9yLnNjcm9sbEludG9W aWV3KCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiB0cnVl Owp9CgovKiBGdW5jdGlvbiB0byBsb2FkIGltYWdlcy4KICoJbm90ZTogbWFrZSB0 aGlzIGVtcHR5IG1ldGhvZCBzbyB0aGF0CiAqIDEpIG1pbmluaXplIGNvZGUgY2hh bmdlczsgMikgZm9yIGZ1dHVyZSBpbnRlZ3JhdGlvbjsgMykgZWFzaWVyIHRvIHRh a2UgdGhlIGZlYXR1cmUgYmFjawogKi8KCi8qIGZ1bmN0aW9uIHRoYXQgd2lsbCBi ZSBjYWxsZWQgZnJvbSBkb2N1bWVudC5vbmxvYWQgZXZlbnQKICogbWFpbiBldmVu dCBoYW5kbGluZywgZm9yIGFsbCBwYWdlcyAqLwpmdW5jdGlvbiBwcmVsb2FkKCkg ewoJbG9hZCgpOwp9CgovKiBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGZy b20gZG9jdW1lbnQub25sb2FkIGV2ZW50CiAqIG92ZXJyaWRlIHRoaXMgZnVuY3Rp b24gdG8gZG8gaW5kaXZpZHVhbCBvbmxvYWQgZXZlbnQgKi8KZnVuY3Rpb24gbG9h ZCgpCnsKfQoKLyogRnVuY3Rpb24gdG8gc2hvdyBoZWxwIHBhZ2UgKi8KZnVuY3Rp b24gcG9wdXBIZWxwKHVybCkKewogICAgLyogRG8gbm90IHBvcHVwIG5ldyB3aW5k b3cgaWYgbGluayB0YXJnZXQgaXMgc2V0IHRvIF9zZWxmICovCiAgICB2YXIgdGhl RXZlbnQgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIu YXJndW1lbnRzWzBdOwogICAgaWYgKHRoZUV2ZW50KSB7CiAgICAgICAgdmFyIGxp bmsgPSB0aGVFdmVudC5zcmNFbGVtZW50IHx8IHRoZUV2ZW50LnRhcmdldDsKICAg ICAgICBpZiAobGluayAmJiBsaW5rLnRhcmdldCA9PSAnX3NlbGYnKSB7CiAgICAg ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHVybDsKICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwogICAgICAgIH0KICAgIH0KCglwb3B1cEhlbHA1NTAodXJsKTsKfQoK LyogRnVuY3Rpb24gdG8gb3BlbiB1cCBhIG5ldyBicm93c2VyIHdpbmRvdywgd2l0 aG91dCBhIG5hdmlnYXRpb24gYmFyICovCmZ1bmN0aW9uIG5ld1dpbmRvdyh1cmwp CnsKICAgIHZhciBuZXdfd2luZG93OwogICAgdmFyIHdpbmRvd1Byb3BlcnRpZXM7 CiAgICB3aW5kb3dQcm9wZXJ0aWVzID0gIndpZHRoPTc1MCxoZWlnaHQ9NzAwLHRv cD0zMCxsZWZ0PTIzMCx0b29sYmFyPTAsbWVudWJhcj0wLHJlc2l6YWJsZT0xLHNj cm9sbGJhcnM9eWVzIjsKICAgIGlmKG5ld193aW5kb3c9PW51bGwpIHsKICAgICAg IG5ld193aW5kb3cgPSB3aW5kb3cub3Blbih1cmwsbnVsbCx3aW5kb3dQcm9wZXJ0 aWVzKTsKICAgIH0gZWxzZSB7CiAgICAgICBuZXdfd2luZG93LmRvY3VtZW50LnJl cGxhY2UodXJsKTsKICAgIH0KfQoKZnVuY3Rpb24gZ29UbyggdXJsICkgewogICAg d2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7Cn0KCi8vIGZvciB1c2UgbGlrZSA8 YSBocmVmPSJ4eHgiIG9uQ2xpY2s9InJldHVybiBwYXJlbnRXaW5kb3dHb1RvKHRo aXMuaHJlZik7Ij54eHg8L2E+CmZ1bmN0aW9uIHBhcmVudFdpbmRvd0dvVG8odXJs LCBjbG9zZVNlbGYpIHsKCWlmIChzZWxmLm9wZW5lciAhPSBudWxsKSB7CgkJc2Vs Zi5vcGVuZXIubG9jYXRpb24gPSB1cmw7CgkJc2VsZi5vcGVuZXIuZm9jdXMoKTsK CX0gZWxzZSB7CgkJc2VsZi5sb2NhdGlvbiA9IHVybDsKCX0KCWlmKGNsb3NlU2Vs Zikgc2VsZi5jbG9zZSgpOwoJcmV0dXJuIGZhbHNlOwp9CgovKiBGdW5jdGlvbiB0 byBnbyB0byBzZWxlY3RlZCBpdGVtIGluIGRyb3AgZG93biBtZW51ICovCmZ1bmN0 aW9uIEdvVG8oc2VsLCB0YXJnZXRzdHIpCnsKICB2YXIgaW5kZXggPSBzZWwuc2Vs ZWN0ZWRJbmRleDsKICBpZiAoc2VsLm9wdGlvbnNbaW5kZXhdLnZhbHVlICE9ICcn KSB7CgkgaWYgKHRhcmdldHN0ciA9PSAnYmxhbmsnKSB7CgkgICB3aW5kb3cub3Bl bihzZWwub3B0aW9uc1tpbmRleF0udmFsdWUsICd3aW4xJyk7CgkgfSBlbHNlIHsK CSAgIHZhciBmcmFtZW9iajsKCSAgIGlmICgoZnJhbWVvYmogPSBldmFsKHRhcmdl dHN0cikpICE9IG51bGwpCgkJIGZyYW1lb2JqLmxvY2F0aW9uID0gc2VsLm9wdGlv bnNbaW5kZXhdLnZhbHVlOwoJIH0KICB9Cn0KCgovLy8vCi8vLwlzZWFyY2ggcmVs YXRlZAovLwoKLyoqCWZ1bmN0aW9uIHRvIHNob3cgbmV4dCBzZWFyY2ggcGFnZSAq LwpmdW5jdGlvbiBzZWFyY2hOZXh0UmVzdWx0UGFnZShhRm9ybSwgYU9mZnNldCkK ewoJdmFyIHggPSBldmFsKGFGb3JtLnN0YXJ0UGFnZS52YWx1ZSkgKyBhT2Zmc2V0 OwoJYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0geDsKCWFGb3JtLnN1Ym1pdCgpOwp9 CgoKLyoqCWZ1bmN0aW9uIHRvIHN1Ym1pdCBzZWFyY2ggZm9ybSB3aXRoIGZpcnN0 IHBhZ2UgKi8KZnVuY3Rpb24gc2VhcmNoU2hvd0ZpcnN0UGFnZShhRm9ybSwgYUNo ZWNrU29ydCkKewoJaWYgKGFDaGVja1NvcnQpIHsKCQlpZiAoYUZvcm0uc29ydEJ5 WzBdLmRlZmF1bHRDaGVja2VkID09IGFGb3JtLnNvcnRCeVswXS5jaGVja2VkKSB7 CgkJCXJldHVybjsKCQl9Cgl9CgoJYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0gMDsK CWFGb3JtLnN1Ym1pdCgpOwp9CgovKioJZnVuY3Rpb24gdG8gY2hhbmdlIHNvcnQg b3B0aW9uICovCmZ1bmN0aW9uIHNlYXJjaFJlc3VsdE9yZGVyQnkoYUZvcm0sIGFT b3J0KQp7CglhRm9ybS5zb3J0QnkudmFsdWUgPSBhU29ydDsKCWFGb3JtLnN1Ym1p dCgpOwp9CgovKioJZnVuY3Rpb24gdG8gcmVzdHJ1Y3Qgc2VhcmNoICovCmZ1bmN0 aW9uIHNlYXJjaFJlc3RyaWN0KGFGb3JtLCBhRmllbGQsIGFWYWx1ZSkgCnsKCXZh ciBjbGF1c2UgPSAiWyIgKyBhRmllbGQgKyAiOiBcIiIgKyBhVmFsdWUgKyAiXCJd IjsKCXZhciBhbGwgPSBhRm9ybS5hbGwudmFsdWU7CglpZiAoYWxsLmxlbmd0aCA9 PSAwKSB7CgkJYWxsID0gY2xhdXNlOwoJfSBlbHNlIHsKCQlhbGwgPSAiKCIgKyBh bGwgKyAiKSBBTkQgIiArIGNsYXVzZTsKCX0KCWFGb3JtLmFsbC52YWx1ZSA9IGFs bDsKCWFGb3JtLnN1Ym1pdCgpOwp9CgovKioJaW52b2tlIHdoZW4gYSBzZWFyY2gg cmVzdWx0IGZvcm0gaXMgYmVpbmcgc3VibWl0dGVkICovCmZ1bmN0aW9uIG9uUmVz dWx0U2VhcmNoRm9ybVN1Ym1pdChhRm9ybSkKewoJaWYgKGFGb3JtLnNlYXJjaFRl eHQgJiYKCQlhRm9ybS5zZWFyY2hUZXh0LnZhbHVlKSB7CgkJYUZvcm0uc3RhcnRQ YWdlLnZhbHVlID0gMDsKCX0KCWFGb3JtLnN1Ym1pdCgpOwp9CgoKLyoqCW1vZGlm eSBjdXJyZW50IHNlYXJjaCBxdWVyeSAqLwpmdW5jdGlvbiBvbk1vZGlmeVNlYXJj aENsaWNrKGFGb3JtKQp7Cgl2YXIgZWxtdHMgPSBhRm9ybS5lbGVtZW50czsKCWZv ciAodmFyIGk9MDsgaTxlbG10cy5sZW5ndGg7IGkrKykgewoJCWlmIChlbG10c1tp XS5uYW1lID09ICJhY3Rpb24iKSB7CgkJCWVsbXRzW2ldLnZhbHVlID0gIm1vZGlm eVNlYXJjaCI7CgkJCWFGb3JtLnN1Ym1pdCgpOwoJCQlyZXR1cm47CgkJfQoJfQoJ YWxlcnQoImNhbm5vdCBmaW5kIGZvcm06ICIgKyBhRm9ybS5uYW1lKTsKfQoKCi8q Kgl1c2VyIGNoYW5nZXMgc2VhcmNoIGhpc3RvcnkgKi8KZnVuY3Rpb24gb25DaGFu Z2VTZWFyY2hIaXN0b3J5KGFGb3JtKQp7Cgl2YXIgaW5kZXggPSBhRm9ybS5oaXN0 b3J5LnNlbGVjdGVkSW5kZXg7CglpZiAoaW5kZXggPiAwKQoJCXdpbmRvdy5sb2Nh dGlvbiA9IGFGb3JtLmhpc3Rvcnkub3B0aW9uc1tpbmRleF0udmFsdWU7Cn0KCgov KioJdXNlciBjbGlja3MgIk1hcmsgb3IgdW5tYXJrIGFsbCBpdGVtcyIgY2hlY2ti b3ggKi8KZnVuY3Rpb24gb25DbGlja01hcmtBbGwoYUZvcm0sIGFOYW1lUHJlZml4 KQp7CiAgICBpZiAoYUZvcm0gaW5zdGFuY2VvZiBTdHJpbmcpIGFGb3JtID0gZG9j dW1lbnQuZm9ybXNbYUZvcm1dOwogICAgaWYgKCEgYU5hbWVQcmVmaXgpIHsKCQlh TmFtZVByZWZpeCA9ICIiOwoJfQoKICAgIHZhciBtYXJrYWxsOwoKICAgIHRyeSB7 CiAgICAgICAgbWFya2FsbCA9IGFGb3JtLm1hcmthbGwuY2hlY2tlZDsKICAgIH0K ICAgIGNhdGNoKGVycikgeyAvLyBtYXJrYWxsIG1pZ2h0IG5vdCBiZSBpbiB0aGUg Zm9ybQogICAgICAgIG1hcmthbGwgPSAkKCdtYXJrYWxsJykuY2hlY2tlZDsKICAg IH0KCgltYXJrQWxsQ2hlY2tib3hlcyhhRm9ybSwgYU5hbWVQcmVmaXgsIG1hcmth bGwpOwp9CgoKZnVuY3Rpb24gc3VibWl0QXJ0aWNsZXMoYUZvcm0sIGFjdGlvbiwg ZXJyb3JNZXNzYWdlKSB7CglzdWJtaXRNdWx0aUFydGljbGVzKGFGb3JtLCBhY3Rp b24sIGZhbHNlLCBlcnJvck1lc3NhZ2UpOwp9CgovKioJc3VibWl0IGZvcm0gaW5z dGFudGx5ICovCmZ1bmN0aW9uIG9uU2VhcmNoUmFkaW9DbGljayhhUmFkaW8pCnsK CWRvY3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXS5zdWJtaXQoKTsKfQoKCi8qKgl3 aGVuIHVzZXIgY2xpY2tzIHN1Z2dlc3RlZCBzZWFyY2ggcXVlcnkgKi8KZnVuY3Rp b24gc3VibWl0U3VnZ2VzdGVkU2VhcmNoKGFRdWVyeSkKewoJdmFyIGZybSA9IGRv Y3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXTsKCWZybS5wcmV2U2VhcmNoLnZhbHVl ID0gYVF1ZXJ5LnJlcGxhY2UoL1wrL2csICIlMkIiKTsKCWZybS5zdWJtaXQoKTsK fQoKCi8qKglpbiBzdWJtaXNzaW9uIG9mIGpvdXJuYWwgc2VhcmNoICovCmZ1bmN0 aW9uIG9uU3VibWl0Sm91cm5hbFNlYXJjaCgpCnsKCXZhciB1cmwgPSAiL2FjdGlv bi9kb1NlYXJjaD9hY3Rpb249c2VhcmNoIjsKCgl2YXIgZWxtdHMgPSBkb2N1bWVu dC5mcm1Kb3VybmFsU2VhcmNoLmVsZW1lbnRzOwoJdmFyIHByZXZTZWFyY2ggPSAi IjsKCWZvciAodmFyIGk9MDsgaTxlbG10cy5sZW5ndGg7IGkrKykKCXsKCQl2YXIg bmFtZSA9IGVsbXRzW2ldLm5hbWU7CgkJdmFyIHZhbHVlID0gZWxtdHNbaV0udmFs dWU7CgkJaWYgKHZhbHVlID09ICIiKQoJCQljb250aW51ZTsKCgkJaWYgKG5hbWUu aW5kZXhPZigiZmllbGQiKSA9PSAtMSkgewoJCQl1cmwgKz0gKCImIiArIG5hbWUg KyAiPSIgKyB2YWx1ZSk7Ci8vCQl9IGVsc2UgaWYgKG5hbWUgPT0gInZvbHllYXJm aWVsZCIpIHsKLy8JCQlpZiAocHJldlNlYXJjaC5sZW5ndGggPiAwKQovLwkJCQlw cmV2U2VhcmNoICs9ICIlMjBhbmQlMjAiOwovLwkJCXByZXZTZWFyY2ggKz0KLy8J CQkJIiUyQigiICsgX3RvUXVlcnlUZXJtKCJqb3VybmFsdm9sdW1lZmllbGQiLCB2 YWx1ZSkgKwovLwkJCQkiKyIgKwovLwkJCQlfdG9RdWVyeVRlcm0oImpvdXJuYWxw dWJsaWNhdGlvbnllYXJmaWVsZCIsIHZhbHVlKSArCi8vCQkJCSIpIjsKCQl9IGVs c2UgewoJCQlpZiAocHJldlNlYXJjaC5sZW5ndGggPiAwKQoJCQkJcHJldlNlYXJj aCArPSAiKyI7CgkJCXByZXZTZWFyY2ggKz0gX3RvUXVlcnlUZXJtKG5hbWUsIHZh bHVlKTsKCQl9Cgl9CgoJdXJsICs9ICgiJnByZXZTZWFyY2g9IiArIGVzY2FwZShw cmV2U2VhcmNoKSk7Cgl3aW5kb3cubG9jYXRpb24gPSB1cmw7Cn0KCgovKioJaGVs cGVyIG1ldGhvZCBpbiBvblN1Ym1pdEpvdXJuYWxTZWFyY2goKSAqLwpmdW5jdGlv biBfdG9RdWVyeVRlcm0oYUZpZWxkLCBhVmFsdWUpCnsKCXZhciBteVZhbHVlID0g YVZhbHVlLnJlcGxhY2UoL1wiL2csICcnKTsKCXZhciBoYXNTcGMgPSBmYWxzZTsK CWZvciAodmFyIGk9YVZhbHVlLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHsKCQlpZiAo YVZhbHVlLmNoYXJBdChpKSA9PSAnICcpIHsKCQkJaGFzU3BjID0gdHJ1ZTsKCQkJ YnJlYWs7CgkJfQoJfQoJaWYgKGhhc1NwYykKCQlteVZhbHVlID0gJ1wiJyArIG15 VmFsdWUgKyAnXCInOwoJcmV0dXJuICgiJTJCIiArIGFGaWVsZCArICIlM0EiICsg bXlWYWx1ZSkKfQoKCmZ1bmN0aW9uIGNoZWNrRWxlbWVudChhRm9ybSwgYU5hbWUs IGFWYWx1ZSkKewoJdmFyIGVsbXRzID0gYUZvcm0uZWxlbWVudHM7Cglmb3IgKHZh ciBpPWVsbXRzLmxlbmd0aC0xOyBpPj0wOyBpPWktMSkKCXsKCQlpZiAoKGVsbXRz W2ldLm5hbWUgPT0gYU5hbWUpICYmCgkJCShlbG10c1tpXS52YWx1ZSA9PSBhVmFs dWUpKQoJCXsKCQkJZWxtdHNbaV0uY2hlY2tlZCA9IHRydWU7CgkJCXJldHVybjsK CQl9Cgl9Cn0KCmZ1bmN0aW9uIGNoZWNrU2VhcmNoSW5wdXQoYUZvcm0pCnsKCWlm IChhRm9ybS5zZWFyY2hUZXh0LnZhbHVlID09ICJFbnRlciBLZXl3b3JkcyIpIHsK CQlhbGVydCgiUGxlYXNlIGVudGVyIHNlYXJjaCB0ZXJtcyIpOwoJfSBlbHNlIHsK CQlhRm9ybS5zdWJtaXQoKTsKCX0KfQoKZnVuY3Rpb24gY2hlY2tWYWx1ZSh2YWx1 ZSwgZXJyb3JWYWx1ZSwgZXJyb3JNZXNzYWdlKSB7CiAgICAgaWYgKHZhbHVlID09 IGVycm9yVmFsdWUpIHsKICAgICAgICAgYWxlcnQoZXJyb3JNZXNzYWdlKTsKICAg ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKfQoK Ly8vLwovLy8JZm9yIHNhdmUgc2VhcmNoCi8vCgpmdW5jdGlvbiBzZWFyY2hTYXZl UG9wdXAoYUZvcm0pCnsKCXZhciBhY2Nlc3MgPSBhRm9ybS5hY2Nlc3M7CglpZiAo YWNjZXNzICYmIGFjY2Vzcy52YWx1ZSE9J25vZmlsdGVyJykgewoJCWlmICghIGNv bmZpcm0oIlNhdmUgU2VhcmNoIHdpbGwgbm90IGluY2x1ZGUgeW91ciBBY2Nlc3Mg UmlnaHRzIGNyaXRlcmlhLCBkbyB5b3Ugd2FudCB0byBjb250aW51ZT8iKSkgewoJ CQlyZXR1cm47CgkJfQoJfQoJCgl2YXIgdXJsID0gIi9hY3Rpb24vZG9TYXZlU2Vh cmNoIjsKCXZhciBuZXdfd2luZG93OwoJdmFyIHdpbmRvd1Byb3BlcnRpZXM7Cgl3 aW5kb3dQcm9wZXJ0aWVzID0gIndpZHRoPTU1MCxoZWlnaHQ9MjUwLHRvb2xiYXI9 MCxtZW51YmFyPTAscmVzaXphYmxlPTEsc2Nyb2xsYmFycz15ZXMiOwoJaWYobmV3 X3dpbmRvdz09bnVsbCkgewoJICAgbmV3X3dpbmRvdyA9IHdpbmRvdy5vcGVuKHVy bCxudWxsLHdpbmRvd1Byb3BlcnRpZXMpOwoJfSBlbHNlIHsKCSAgIG5ld193aW5k b3cuZG9jdW1lbnQucmVwbGFjZSh1cmwpOwoJfQp9CgpmdW5jdGlvbiBnZXRTYXZl U2VhcmNoTmFtZU9iamVjdChhRm9ybSkKewoJdmFyIG9iajsKCWlmICghIGRvY3Vt ZW50LmFsbCkgewoJCXZhciBhcnIgPSBhRm9ybS5lbGVtZW50czsKCQlmb3IgKHZh ciBpPTA7ICghIG9iaikgJiYgKGk8YXJyLmxlbmd0aCk7IGkrKykgewoJCQlpZiAo YXJyW2ldLm5hbWUgPT0gInNhdmVTZWFyY2hOYW1lIikgewoJCQkJb2JqID0gYXJy W2ldOwoJCQl9CgkJfQoJfSBlbHNlIHsKCQlvYmogPSBkb2N1bWVudC5hbGwuc2F2 ZVNlYXJjaE5hbWU7Cgl9CglyZXR1cm4gb2JqOwp9CgoKZnVuY3Rpb24gcGVyZm9y bVNhdmVTZWFyY2goYUZvcm0sIGFJc0ZBSikKewoJdmFyIHNsdEFsZXJ0ID0gYUZv cm0uc2VhcmNoYWxlcnQ7CglpZiAoYUlzRkFKICYmIChzbHRBbGVydC5zZWxlY3Rl ZEluZGV4PjApKSB7CgkJYWxlcnQoIlNvcnJ5LCBlLW1haWwgYWxlcnQgZm9yIGpv dXJuYWxzIHdpdGggXG4iICsKCQkJCSJmdWxsIGFjY2VzcyByaWdodHMgaXMgbm90 IGF2YWlsYWJsZS4iKTsKCQlyZXR1cm47Cgl9CgoJdmFyIGVsbXRzID0gYUZvcm0u ZWxlbWVudHM7Cglmb3IgKHZhciBpPTA7IGk8ZWxtdHMubGVuZ3RoOyBpKyspIHsK CQlpZiAoZWxtdHNbaV0ubmFtZSA9PSAiYWN0aW9uIikgewoJCQllbG10c1tpXS52 YWx1ZSA9ICJzYXZlIjsKCQkJYUZvcm0uc3VibWl0KCk7CgkJCXJldHVybjsKCQl9 Cgl9CglhbGVydCgiZm9ybSBub3QgZm91bmQ6ICIgKyBhRm9ybS5uYW1lKTsKfQoK CmZ1bmN0aW9uIHJlc2V0RmllbGQoYUZpZWxkLCBhRGVmYXVsdFRleHQsIGFDb2xv cikKewoJaWYgKGFGaWVsZC52YWx1ZSA9PSBhRGVmYXVsdFRleHQpIHsKCQlhRmll bGQudmFsdWUgPSAiIjsKCX0KCWFGaWVsZC5zdHlsZS5jb2xvciA9IGFDb2xvcjsK fQovL2ZvciBlY29tbTIKZnVuY3Rpb24gc3VibWl0SWZWYWxpZCgpewogICAgdmFy IHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiam91cm5hbENvZGUiKTsKICAg IHZhciBoYXNKb3VybmFsID0geC52YWx1ZSAhPSAiIjsKICAgIGlmIChoYXNKb3Vy bmFsICYmIGhhc1N1YmNyaWJlclR5cGUoKSAmJiBoYXNTdWJzY3JpcHRpb25UeXBl KCkpeyB4LmZvcm0uc3VibWl0KCk7fQp9CmZ1bmN0aW9uIHN1Ym1pdElmVHlwZXMo KXsKICAgIGlmIChoYXNTdWJjcmliZXJUeXBlKCkgJiYgaGFzU3Vic2NyaXB0aW9u VHlwZSgpKSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24g c3VibWl0SWZTdWJzY3JpYmVyKCl7CiAgICBpZiAoaGFzU3ViY3JpYmVyVHlwZSgp KSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24gc3VibWl0 SWZTdWJzY3JpcHRpb25UeXBlKCl7CiAgICBpZiAoaGFzU3Vic2NyaXB0aW9uVHlw ZSgpKSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24gaGFz U3ViY3JpYmVyVHlwZSgpewogICAgcmV0dXJuIGlzQ2hlY2tlZCgkKCJpbmRpdmlk dWFsIikpIHx8IGlzQ2hlY2tlZCgkKCJpbnN0aXR1dGlvbiIpKTsKfQpmdW5jdGlv biBoYXNTdWJzY3JpcHRpb25UeXBlKCl7CiAgICByZXR1cm4gJCgiZWxlY3Ryb25p YyIpLmNoZWNrZWQgfHwgJCgicHJpbnQiKS5jaGVja2VkIHx8ICQoImNvbWJvIiku Y2hlY2tlZDsKfQovKiogdG8gcGxlYXNlIElFNiBmb3IgaGlkZGVuIGlucHV0IGVs bGVtZW50cyoqLwpmdW5jdGlvbiBpc0NoZWNrZWQoeSl7CiAgICByZXR1cm4geSAm JiAoeS50eXBlID09ICJoaWRkZW4iIHx8IHkuY2hlY2tlZCkKfQovL2VuZCBvZiBl Y29tbTIK ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/script.js Content-Transfer-Encoding: Base64 LyoqCWZ1bmN0aW9uIHRvIHJlc3RydWN0IHNlYXJjaCAqLw0KZnVuY3Rpb24gc2Vh cmNoUmVzdHJpY3QoYUZvcm0sIGFGaWVsZCwgYVZhbHVlLCByZXBsYWNlKQ0Kew0K ICAgIGlmIChyZXBsYWNlKSB7DQogICAgICAgIHJlbW92ZVJlc3RyaWN0aW9uc09m SW5wdXQoYUZvcm0sIGFGaWVsZCk7DQogICAgfQ0KICAgIHZhciBpbnB1dCA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQogICAgaW5wdXQudHlwZSA9 ICJoaWRkZW4iOw0KICAgIGlucHV0Lm5hbWUgPSBhRmllbGQ7DQogICAgaW5wdXQu dmFsdWUgPSBhVmFsdWU7DQogICAgYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0gIiI7 DQogICAgYUZvcm0gPSAkKGFGb3JtKTsNCiAgICBhRm9ybS5hcHBlbmRDaGlsZChp bnB1dCk7DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHJlbW92 ZUFsbFJlc3RyaWN0aW9ucyhhRm9ybSkNCnsNCiAgICBmb3IgKGkgPSAxOyBpIDwg YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHJlbW92ZVJlc3RyaWN0 aW9uc09mSW5wdXQoYUZvcm0sIGFyZ3VtZW50c1tpXSk7DQogICAgfQ0KICAgIGFG b3JtLnN1Ym1pdCgpOw0KfQ0KDQpmdW5jdGlvbiByZW1vdmVSZXN0cmljdGlvbnNP ZklucHV0KGFGb3JtLCBhRmllbGQpIHsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVth RmllbGRdOw0KICAgIGlmICh0eXBlb2YgaW5wdXQgPT0gJ3VuZGVmaW5lZCcgfHwg aW5wdXQgPT0gbnVsbCkgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAg aWYgKHR5cGVvZiBpbnB1dC5sZW5ndGggIT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAg ICAgdmFyIGk7DQogICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7 IGkrKykgew0KICAgICAgICAgICAgaW5wdXRbaV0udmFsdWUgPSAnJzsNCiAgICAg ICAgfQ0KICAgICAgICByZXR1cm4gaW5wdXQubGVuZ3RoOw0KICAgIH0gZWxzZSB7 DQogICAgICAgIGlucHV0LnZhbHVlID0gJyc7DQogICAgICAgIGlucHV0LnBhcmVu dE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQpOw0KICAgICAgICByZXR1cm4gMTsNCiAg ICB9DQp9DQoNCmZ1bmN0aW9uIHJlbW92ZVJlc3RyaWN0KGFGb3JtLCBhRmllbGQs IGFWYWx1ZSkNCnsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVthRmllbGRdOw0KICAg IGlmICh0eXBlb2YgaW5wdXQubGVuZ3RoICE9ICd1bmRlZmluZWQnKSB7DQogICAg ICAgIHZhciBpOw0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3Ro OyBpKyspIHsNCiAgICAgICAgICAgIGlmIChpbnB1dFtpXS52YWx1ZSA9PSBhVmFs dWUpIHsNCiAgICAgICAgICAgICAgICBpbnB1dFtpXS52YWx1ZSA9ICcnOw0KICAg ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBlbHNlIGlmIChpbnB1dC52YWx1 ZSA9PSBhVmFsdWUpIHsNCiAgICAgICAgaW5wdXQudmFsdWUgPSAnJzsNCiAgICB9 DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHNldElucHV0KGFG b3JtLCBhRmllbGQsIGFWYWx1ZSkNCnsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVth RmllbGRdOw0KICAgIGlmICh0eXBlb2YgaW5wdXQgPT0gJ3VuZGVmaW5lZCcgfHwg aW5wdXQgPT0gbnVsbCkgew0KICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoImlucHV0Iik7DQogICAgICAgIGlucHV0LnR5cGUgPSAiaGlkZGVu IjsNCiAgICAgICAgaW5wdXQubmFtZSA9IGFGaWVsZDsNCiAgICAgICAgYUZvcm0g PSAkKGFGb3JtKTsNCiAgICAgICAgYUZvcm0uYXBwZW5kQ2hpbGQoaW5wdXQpOw0K ICAgIH0NCiAgICBpZiAodHlwZW9mIGlucHV0Lmxlbmd0aCAhPSAndW5kZWZpbmVk Jykgew0KICAgICAgICB2YXIgaTsNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGlu cHV0Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpbnB1dFtpXS52YWx1ZSA9 IGFWYWx1ZTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGlucHV0 LnZhbHVlID0gYVZhbHVlOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gc2V0SW5wdXRB bmRTdWJtaXQoYUZvcm0sIGFGaWVsZCwgYVZhbHVlKQ0Kew0KICAgIHNldElucHV0 KGFGb3JtLCBhRmllbGQsIGFWYWx1ZSk7DQogICAgYUZvcm0uc3RhcnRQYWdlLnZh bHVlID0gIiI7DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHVw ZGF0ZUNoZWNrQm94ZXMoY29udHJvbGxpbmdJbnB1dCwgaW5wdXROYW1lKSB7DQog ICAgdmFyIGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGlucHV0 TmFtZSk7DQogICAgZm9yIChpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7IGkrKykg ew0KICAgICAgICBpbnB1dHNbaV0uY2hlY2tlZCA9IGNvbnRyb2xsaW5nSW5wdXQu Y2hlY2tlZDsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHN1Ym1pdFNhdmVTZWFyY2go Zm9ybSkgew0KICAgIGZvcm0gPSAkKGZvcm0pOw0KICAgIHZhciBtYXAgPSBmb3Jt LnNlcmlhbGl6ZSh0cnVlKTsNCiAgICBtYXBbJ2FqYXgnXSA9ICd0cnVlJzsNCiAg ICBtYXBbJ3BlcmZvcm0nXSA9ICd0cnVlJzsNCiAgICBuZXcgQWpheC5SZXF1ZXN0 KCcvYWN0aW9uL2RvU2F2ZVNlYXJjaCcsIHsNCiAgICAgICAgbWV0aG9kOiAnZ2V0 JywNCiAgICAgICAgcGFyYW1ldGVyczogbWFwLA0KICAgICAgICBvbkZhaWx1cmU6 IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgYWxlcnQoIlVuYWJsZSB0byBzYXZl IHNlYXJjaC4iKQ0KICAgICAgICB9LA0KICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0 aW9uKHRyYW5zcG9ydCkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRyYW5z cG9ydC5yZXNwb25zZVRleHQ7DQogICAgICAgICAgICB2YXIgcmVkaXJlY3RQcmVm aXggPSAicmVkaXJlY3RUbzoiOw0KICAgICAgICAgICAgdmFyIGkgPSByZXN1bHQu aW5kZXhPZihyZWRpcmVjdFByZWZpeCk7DQogICAgICAgICAgICBpZiAocmVzdWx0 ID09ICdvaycpIHsNCiAgICAgICAgICAgICAgICBzYXZlU2VhcmNoKCdmaW5hbGl6 ZScpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChpID49IDApIHsNCiAgICAgICAg ICAgICAgICB2YXIgcmVkaXJlY3RUbyA9IHJlc3VsdC5zdWJzdHJpbmcocmVkaXJl Y3RQcmVmaXgubGVuZ3RoKTsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp b24gPSByZWRpcmVjdFRvOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICBhbGVydCgiVW5hYmxlIHRvIHNhdmUgc2VhcmNoLiBSZWFzb246ICIg KyByZXN1bHQpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAg ICApOw0KfQ0KDQpmdW5jdGlvbiBmaXhBcnRpY2xlTGlua3Mob25QYWdlVGl0bGVQ YXR0ZXJuKSB7DQogICAgJCQoIiNsaW5rcyBsaVtjbGFzc349J29uUGFnZSddIiku ZWFjaChmdW5jdGlvbihlbGVtKSB7DQogICAgICAgICQoZWxlbSkucmVtb3ZlQ2xh c3NOYW1lKCdvblBhZ2UnKTsNCiAgICB9KTsNCiAgICAkJCgiI2xpbmtzIGxpIGFb dGl0bGV+PSciK29uUGFnZVRpdGxlUGF0dGVybisiJ10iKS5lYWNoKGZ1bmN0aW9u KGVsZW0pIHsNCi8vICAgICAgICBhbGVydCgiZmluZCBzdXBwbCBhbmNob3IuIHBh cmVudDogIiArICQoZWxlbSkucGFyZW50Tm9kZSk7DQogICAgICAgICQoJChlbGVt KS5wYXJlbnROb2RlKS5hZGRDbGFzc05hbWUoJ29uUGFnZScpOw0KICAgIH0pOw0K DQp9DQoNCmZ1bmN0aW9uIHNlYXJjaE5leHRSZXN1bHRQYWdlSW5TdWJqZWN0KGFG b3JtLCBhT2Zmc2V0LCBhU3ViamVjdCkNCnsNCgl2YXIgeCA9IGV2YWwoYUZvcm0u c3RhcnRQYWdlLnZhbHVlKSArIGFPZmZzZXQ7DQoJYUZvcm0uc3RhcnRQYWdlLnZh bHVlID0geDsNCglhRm9ybS5zdWJtaXQoKTsNCn0NCg0KZnVuY3Rpb24gc2VhcmNo UmVzdWx0UGFnZShhRm9ybSwgcGFnZSwgYVN1YmplY3QpDQp7DQogICAgYUZvcm0u c3RhcnRQYWdlLnZhbHVlID0gcGFnZTsNCglhRm9ybS5zdWJtaXQoKTsNCn0NCg== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=prototype.js Content-Type: application/x-javascript; charset=UTF-8; name=prototype.js Content-Location: http://pubs.acs.org/templates/jsp/js/prototype.js Content-Transfer-Encoding: Base64 LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYu MC4zCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90 b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9m IGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUg UHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8K ICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBl ID0gewogIFZlcnNpb246ICcxLjYuMC4zJywKCiAgQnJvd3NlcjogewogICAgSUU6 ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2Vu dC5pbmRleE9mKCdPcGVyYScpID09PSAtMSksCiAgICBPcGVyYTogIG5hdmlnYXRv ci51c2VyQWdlbnQuaW5kZXhPZignT3BlcmEnKSA+IC0xLAogICAgV2ViS2l0OiBu YXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEs CiAgICBHZWNrbzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28n KSA+IC0xICYmCiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hU TUwnKSA9PT0gLTEsCiAgICBNb2JpbGVTYWZhcmk6ICEhbmF2aWdhdG9yLnVzZXJB Z2VudC5tYXRjaCgvQXBwbGUuKk1vYmlsZS4qU2FmYXJpLykKICB9LAoKICBCcm93 c2VyRmVhdHVyZXM6IHsKICAgIFhQYXRoOiAhIWRvY3VtZW50LmV2YWx1YXRlLAog ICAgU2VsZWN0b3JzQVBJOiAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IsCiAgICBF bGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAgICBTcGVj aWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVhdGVFbGVt ZW50KCdkaXYnKVsnX19wcm90b19fJ10gJiYKICAgICAgZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnZGl2JylbJ19fcHJvdG9fXyddICE9PQogICAgICAgIGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKVsnX19wcm90b19fJ10KICB9LAoKICBTY3Jp cHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9zY3JpcHQ+ JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwqXC9ccyok LywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVuY3Rp b24oeCkgeyByZXR1cm4geCB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuTW9i aWxlU2FmYXJpKQogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNF bGVtZW50RXh0ZW5zaW9ucyA9IGZhbHNlOwoKCi8qIEJhc2VkIG9uIEFsZXggQXJu ZWxsJ3MgaW5oZXJpdGFuY2UgaW1wbGVtZW50YXRpb24uICovCnZhciBDbGFzcyA9 IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcmVudCA9IG51bGws IHByb3BlcnRpZXMgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1 bmN0aW9uKHByb3BlcnRpZXNbMF0pKQogICAgICBwYXJlbnQgPSBwcm9wZXJ0aWVz LnNoaWZ0KCk7CgogICAgZnVuY3Rpb24ga2xhc3MoKSB7CiAgICAgIHRoaXMuaW5p dGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQoKICAgIE9iamVj dC5leHRlbmQoa2xhc3MsIENsYXNzLk1ldGhvZHMpOwogICAga2xhc3Muc3VwZXJj bGFzcyA9IHBhcmVudDsKICAgIGtsYXNzLnN1YmNsYXNzZXMgPSBbXTsKCiAgICBp ZiAocGFyZW50KSB7CiAgICAgIHZhciBzdWJjbGFzcyA9IGZ1bmN0aW9uKCkgeyB9 OwogICAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwog ICAgICBrbGFzcy5wcm90b3R5cGUgPSBuZXcgc3ViY2xhc3M7CiAgICAgIHBhcmVu dC5zdWJjbGFzc2VzLnB1c2goa2xhc3MpOwogICAgfQoKICAgIGZvciAodmFyIGkg PSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykKICAgICAga2xhc3MuYWRk TWV0aG9kcyhwcm9wZXJ0aWVzW2ldKTsKCiAgICBpZiAoIWtsYXNzLnByb3RvdHlw ZS5pbml0aWFsaXplKQogICAgICBrbGFzcy5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9 IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwoKICAgIGtsYXNzLnByb3RvdHlwZS5j b25zdHJ1Y3RvciA9IGtsYXNzOwoKICAgIHJldHVybiBrbGFzczsKICB9Cn07CgpD bGFzcy5NZXRob2RzID0gewogIGFkZE1ldGhvZHM6IGZ1bmN0aW9uKHNvdXJjZSkg ewogICAgdmFyIGFuY2VzdG9yICAgPSB0aGlzLnN1cGVyY2xhc3MgJiYgdGhpcy5z dXBlcmNsYXNzLnByb3RvdHlwZTsKICAgIHZhciBwcm9wZXJ0aWVzID0gT2JqZWN0 LmtleXMoc291cmNlKTsKCiAgICBpZiAoIU9iamVjdC5rZXlzKHsgdG9TdHJpbmc6 IHRydWUgfSkubGVuZ3RoKQogICAgICBwcm9wZXJ0aWVzLnB1c2goInRvU3RyaW5n IiwgInZhbHVlT2YiKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcHJv cGVydGllcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2YXIgcHJv cGVydHkgPSBwcm9wZXJ0aWVzW2ldLCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eV07 CiAgICAgIGlmIChhbmNlc3RvciAmJiBPYmplY3QuaXNGdW5jdGlvbih2YWx1ZSkg JiYKICAgICAgICAgIHZhbHVlLmFyZ3VtZW50TmFtZXMoKS5maXJzdCgpID09ICIk c3VwZXIiKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlOwogICAgICAgIHZh bHVlID0gKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbigp IHsgcmV0dXJuIGFuY2VzdG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsK ICAgICAgICB9KShwcm9wZXJ0eSkud3JhcChtZXRob2QpOwoKICAgICAgICB2YWx1 ZS52YWx1ZU9mID0gbWV0aG9kLnZhbHVlT2YuYmluZChtZXRob2QpOwogICAgICAg IHZhbHVlLnRvU3RyaW5nID0gbWV0aG9kLnRvU3RyaW5nLmJpbmQobWV0aG9kKTsK ICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2YWx1ZTsK ICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJhY3QgPSB7 IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJj ZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRlc3RpbmF0 aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJuIGRlc3Rp bmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNwZWN0OiBm dW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmplY3QuaXNV bmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAgICBpZiAo b2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1cm4gb2Jq ZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9iamVjdCk7 CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VF cnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQogIH0sCgog IHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9IHR5cGVv ZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZp bmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1bmtub3du JzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50 b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVy biAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9iamVjdC50 b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkpIHJldHVy bjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkg aW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pTT04ob2Jq ZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZh bHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAn OiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1bHRzLmpv aW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24o b2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3RyaW5nKCk7 CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBv YmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6IFN0cmlu Zy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlvbihvYmpl Y3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBp biBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICByZXR1cm4g a2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFy IHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KQog ICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJldHVybiB2 YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0 dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlzRWxlbWVu dDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gISEob2JqZWN0ICYmIG9i amVjdC5ub2RlVHlwZSA9PSAxKTsKICB9LAoKICBpc0FycmF5OiBmdW5jdGlvbihv YmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2Jq ZWN0ID09ICJvYmplY3QiICYmCiAgICAgICdzcGxpY2UnIGluIG9iamVjdCAmJiAn am9pbicgaW4gb2JqZWN0OwogIH0sCgogIGlzSGFzaDogZnVuY3Rpb24ob2JqZWN0 KSB7CiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgSGFzaDsKICB9LAoKICBp c0Z1bmN0aW9uOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiB0eXBlb2Yg b2JqZWN0ID09ICJmdW5jdGlvbiI7CiAgfSwKCiAgaXNTdHJpbmc6IGZ1bmN0aW9u KG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gInN0cmluZyI7 CiAgfSwKCiAgaXNOdW1iZXI6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJu IHR5cGVvZiBvYmplY3QgPT0gIm51bWJlciI7CiAgfSwKCiAgaXNVbmRlZmluZWQ6 IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0g InVuZGVmaW5lZCI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoRnVuY3Rpb24ucHJv dG90eXBlLCB7CiAgYXJndW1lbnROYW1lczogZnVuY3Rpb24oKSB7CiAgICB2YXIg bmFtZXMgPSB0aGlzLnRvU3RyaW5nKCkubWF0Y2goL15bXHNcKF0qZnVuY3Rpb25b XihdKlwoKFteXCldKilcKS8pWzFdCiAgICAgIC5yZXBsYWNlKC9ccysvZywgJycp LnNwbGl0KCcsJyk7CiAgICByZXR1cm4gbmFtZXMubGVuZ3RoID09IDEgJiYgIW5h bWVzWzBdID8gW10gOiBuYW1lczsKICB9LAoKICBiaW5kOiBmdW5jdGlvbigpIHsK ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNVbmRlZmlu ZWQoYXJndW1lbnRzWzBdKSkgcmV0dXJuIHRoaXM7CiAgICB2YXIgX19tZXRob2Qg PSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlm dCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRo b2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShhcmd1bWVudHMpKSk7CiAg ICB9CiAgfSwKCiAgYmluZEFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAg ICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2Jq ZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7 CiAgICAgIHJldHVybiBfX21ldGhvZC5hcHBseShvYmplY3QsIFtldmVudCB8fCB3 aW5kb3cuZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICB9CiAgfSwKCiAgY3Vycnk6 IGZ1bmN0aW9uKCkgewogICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4g dGhpczsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVu dHMpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRo b2QuYXBwbHkodGhpcywgYXJncy5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAg fQogIH0sCgogIGRlbGF5OiBmdW5jdGlvbigpIHsKICAgIHZhciBfX21ldGhvZCA9 IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCB0aW1lb3V0ID0gYXJncy5zaGlm dCgpICogMTAwMDsKICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv bigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9kLCBhcmdz KTsKICAgIH0sIHRpbWVvdXQpOwogIH0sCgogIGRlZmVyOiBmdW5jdGlvbigpIHsK ICAgIHZhciBhcmdzID0gWzAuMDFdLmNvbmNhdCgkQShhcmd1bWVudHMpKTsKICAg IHJldHVybiB0aGlzLmRlbGF5LmFwcGx5KHRoaXMsIGFyZ3MpOwogIH0sCgogIHdy YXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXM7 CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB3cmFwcGVyLmFw cGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25jYXQoJEEoYXJndW1l bnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVuY3Rpb24oKSB7CiAg ICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQ7 CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJuIHRoaXMuX21ldGhv ZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5 KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfTsKICB9 Cn0pOwoKRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgcmV0 dXJuICciJyArIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSArICctJyArCiAgICAodGhp cy5nZXRVVENNb250aCgpICsgMSkudG9QYWRkZWRTdHJpbmcoMikgKyAnLScgKwog ICAgdGhpcy5nZXRVVENEYXRlKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnVCcgKwog ICAgdGhpcy5nZXRVVENIb3VycygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsK ICAgIHRoaXMuZ2V0VVRDTWludXRlcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzon ICsKICAgIHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvUGFkZGVkU3RyaW5nKDIpICsg J1oiJzsKfTsKCnZhciBUcnkgPSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkgewogICAg dmFyIHJldHVyblZhbHVlOwoKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBh cmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxh bWJkYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm5W YWx1ZSA9IGxhbWJkYSgpOwogICAgICAgIGJyZWFrOwogICAgICB9IGNhdGNoIChl KSB7IH0KICAgIH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9OwoKUmVn RXhwLnByb3RvdHlwZS5tYXRjaCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdDsKClJl Z0V4cC5lc2NhcGUgPSBmdW5jdGlvbihzdHIpIHsKICByZXR1cm4gU3RyaW5nKHN0 cikucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAnXFwkMScp Owp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUGVyaW9k aWNhbEV4ZWN1dGVyID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5j dGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0aGlzLmNhbGxiYWNrID0g Y2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKICAgIHRo aXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7CgogICAgdGhpcy5yZWdpc3Rl ckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24o KSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblRpbWVyRXZl bnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9LAoKICBl eGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAg fSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIXRoaXMudGltZXIpIHJl dHVybjsKICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0aGlzLnRp bWVyID0gbnVsbDsKICB9LAoKICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9uKCkgewog ICAgaWYgKCF0aGlzLmN1cnJlbnRseUV4ZWN1dGluZykgewogICAgICB0cnkgewog ICAgICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAgICAgICB0 aGlzLmV4ZWN1dGUoKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLmN1 cnJlbnRseUV4ZWN1dGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfQp9KTsK T2JqZWN0LmV4dGVuZChTdHJpbmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0aW9uKHZh bHVlKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZh bHVlKTsKICB9LAogIHNwZWNpYWxDaGFyOiB7CiAgICAnXGInOiAnXFxiJywKICAg ICdcdCc6ICdcXHQnLAogICAgJ1xuJzogJ1xcbicsCiAgICAnXGYnOiAnXFxmJywK ICAgICdccic6ICdcXHInLAogICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsKCk9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0aW9uKHBh dHRlcm4sIHJlcGxhY2VtZW50KSB7CiAgICB2YXIgcmVzdWx0ID0gJycsIHNvdXJj ZSA9IHRoaXMsIG1hdGNoOwogICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMuY2Fs bGVlLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CgogICAgd2hpbGUg KHNvdXJjZS5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChtYXRjaCA9IHNvdXJjZS5t YXRjaChwYXR0ZXJuKSkgewogICAgICAgIHJlc3VsdCArPSBzb3VyY2Uuc2xpY2Uo MCwgbWF0Y2guaW5kZXgpOwogICAgICAgIHJlc3VsdCArPSBTdHJpbmcuaW50ZXJw cmV0KHJlcGxhY2VtZW50KG1hdGNoKSk7CiAgICAgICAgc291cmNlICA9IHNvdXJj ZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgIH0g ZWxzZSB7CiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZSwgc291cmNlID0gJyc7CiAg ICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgc3ViOiBmdW5j dGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgY291bnQpIHsKICAgIHJlcGxhY2Vt ZW50ID0gdGhpcy5nc3ViLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7 CiAgICBjb3VudCA9IE9iamVjdC5pc1VuZGVmaW5lZChjb3VudCkgPyAxIDogY291 bnQ7CgogICAgcmV0dXJuIHRoaXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlvbihtYXRj aCkgewogICAgICBpZiAoLS1jb3VudCA8IDApIHJldHVybiBtYXRjaFswXTsKICAg ICAgcmV0dXJuIHJlcGxhY2VtZW50KG1hdGNoKTsKICAgIH0pOwogIH0sCgogIHNj YW46IGZ1bmN0aW9uKHBhdHRlcm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlzLmdzdWIo cGF0dGVybiwgaXRlcmF0b3IpOwogICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKICB9 LAoKICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAg ICBsZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0gT2JqZWN0 LmlzVW5kZWZpbmVkKHRydW5jYXRpb24pID8gJy4uLicgOiB0cnVuY2F0aW9uOwog ICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGlj ZSgwLCBsZW5ndGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDog U3RyaW5nKHRoaXMpOwogIH0sCgogIHN0cmlwOiBmdW5jdGlvbigpIHsKICAgIHJl dHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcn KTsKICB9LAoKICBzdHJpcFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo aXMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwgJycpOwogIH0sCgogIHN0cmlwU2Ny aXB0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKG5ldyBS ZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW1nJyksICcnKTsKICB9 LAoKICBleHRyYWN0U2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICB2YXIgbWF0Y2hB bGwgPSBuZXcgUmVnRXhwKFByb3RvdHlwZS5TY3JpcHRGcmFnbWVudCwgJ2ltZycp OwogICAgdmFyIG1hdGNoT25lID0gbmV3IFJlZ0V4cChQcm90b3R5cGUuU2NyaXB0 RnJhZ21lbnQsICdpbScpOwogICAgcmV0dXJuICh0aGlzLm1hdGNoKG1hdGNoQWxs KSB8fCBbXSkubWFwKGZ1bmN0aW9uKHNjcmlwdFRhZykgewogICAgICByZXR1cm4g KHNjcmlwdFRhZy5tYXRjaChtYXRjaE9uZSkgfHwgWycnLCAnJ10pWzFdOwogICAg fSk7CiAgfSwKCiAgZXZhbFNjcmlwdHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu IHRoaXMuZXh0cmFjdFNjcmlwdHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0KSB7IHJl dHVybiBldmFsKHNjcmlwdCkgfSk7CiAgfSwKCiAgZXNjYXBlSFRNTDogZnVuY3Rp b24oKSB7CiAgICB2YXIgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBzZWxm LnRleHQuZGF0YSA9IHRoaXM7CiAgICByZXR1cm4gc2VsZi5kaXYuaW5uZXJIVE1M OwogIH0sCgogIHVuZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGl2 ID0gbmV3IEVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMu c3RyaXBUYWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2 LmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVz KS5pbmplY3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8r bm9kZS5ub2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2Rl VmFsdWUpIDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2Vw YXJhdG9yKSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhb Xj8jXSopKCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgfTsKCiAg ICByZXR1cm4gbWF0Y2hbMV0uc3BsaXQoc2VwYXJhdG9yIHx8ICcmJykuaW5qZWN0 KHsgfSwgZnVuY3Rpb24oaGFzaCwgcGFpcikgewogICAgICBpZiAoKHBhaXIgPSBw YWlyLnNwbGl0KCc9JykpWzBdKSB7CiAgICAgICAgdmFyIGtleSA9IGRlY29kZVVS SUNvbXBvbmVudChwYWlyLnNoaWZ0KCkpOwogICAgICAgIHZhciB2YWx1ZSA9IHBh aXIubGVuZ3RoID4gMSA/IHBhaXIuam9pbignPScpIDogcGFpclswXTsKICAgICAg ICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVSSUNvbXBv bmVudCh2YWx1ZSk7CgogICAgICAgIGlmIChrZXkgaW4gaGFzaCkgewogICAgICAg ICAgaWYgKCFPYmplY3QuaXNBcnJheShoYXNoW2tleV0pKSBoYXNoW2tleV0gPSBb aGFzaFtrZXldXTsKICAgICAgICAgIGhhc2hba2V5XS5wdXNoKHZhbHVlKTsKICAg ICAgICB9CiAgICAgICAgZWxzZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAgICAgfQog ICAgICByZXR1cm4gaGFzaDsKICAgIH0pOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc3BsaXQoJycpOwogIH0sCgogIHN1Y2M6 IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhpcy5sZW5n dGggLSAxKSArCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jaGFyQ29k ZUF0KHRoaXMubGVuZ3RoIC0gMSkgKyAxKTsKICB9LAoKICB0aW1lczogZnVuY3Rp b24oY291bnQpIHsKICAgIHJldHVybiBjb3VudCA8IDEgPyAnJyA6IG5ldyBBcnJh eShjb3VudCArIDEpLmpvaW4odGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0 aW9uKCkgewogICAgdmFyIHBhcnRzID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBw YXJ0cy5sZW5ndGg7CiAgICBpZiAobGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsK CiAgICB2YXIgY2FtZWxpemVkID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAg ID8gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5z dWJzdHJpbmcoMSkKICAgICAgOiBwYXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0g MTsgaSA8IGxlbjsgaSsrKQogICAgICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hh ckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7Cgog ICAgcmV0dXJuIGNhbWVsaXplZDsKICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlv bigpIHsKICAgIHJldHVybiB0aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg dGhpcy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNj b3JlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8n KS5nc3ViKC8oW0EtWl0rKShbQS1aXVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIo LyhbYS16XGRdKShbQS1aXSkvLCcjezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRv TG93ZXJDYXNlKCk7CiAgfSwKCiAgZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzLmdzdWIoL18vLCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVu Y3Rpb24odXNlRG91YmxlUXVvdGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9 IHRoaXMuZ3N1YigvW1x4MDAtXHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAg ICAgIHZhciBjaGFyYWN0ZXIgPSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1d OwogICAgICByZXR1cm4gY2hhcmFjdGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyAr IG1hdGNoWzBdLmNoYXJDb2RlQXQoKS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAg ICB9KTsKICAgIGlmICh1c2VEb3VibGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2Nh cGVkU3RyaW5nLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJu ICInIiArIGVzY2FwZWRTdHJpbmcucmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIici OwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5p bnNwZWN0KHRydWUpOwogIH0sCgogIHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmls dGVyKSB7CiAgICByZXR1cm4gdGhpcy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5K U09ORmlsdGVyLCAnI3sxfScpOwogIH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7 CiAgICB2YXIgc3RyID0gdGhpczsKICAgIGlmIChzdHIuYmxhbmsoKSkgcmV0dXJu IGZhbHNlOwogICAgc3RyID0gdGhpcy5yZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBs YWNlKC8iW14iXFxcblxyXSoiL2csICcnKTsKICAgIHJldHVybiAoL15bLDp7fVxb XF0wLTkuXC0rRWFlZmxuci11IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoK ICBldmFsSlNPTjogZnVuY3Rpb24oc2FuaXRpemUpIHsKICAgIHZhciBqc29uID0g dGhpcy51bmZpbHRlckpTT04oKTsKICAgIHRyeSB7CiAgICAgIGlmICghc2FuaXRp emUgfHwganNvbi5pc0pTT04oKSkgcmV0dXJuIGV2YWwoJygnICsganNvbiArICcp Jyk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHRocm93IG5ldyBTeW50YXhFcnJv cignQmFkbHkgZm9ybWVkIEpTT04gc3RyaW5nOiAnICsgdGhpcy5pbnNwZWN0KCkp OwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAgIHJldHVy biB0aGlzLmluZGV4T2YocGF0dGVybikgPiAtMTsKICB9LAoKICBzdGFydHNXaXRo OiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHBh dHRlcm4pID09PSAwOwogIH0sCgogIGVuZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJu KSB7CiAgICB2YXIgZCA9IHRoaXMubGVuZ3RoIC0gcGF0dGVybi5sZW5ndGg7CiAg ICByZXR1cm4gZCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YocGF0dGVybikgPT09 IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMg PT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIC9e XHMqJC8udGVzdCh0aGlzKTsKICB9LAoKICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24o b2JqZWN0LCBwYXR0ZXJuKSB7CiAgICByZXR1cm4gbmV3IFRlbXBsYXRlKHRoaXMs IHBhdHRlcm4pLmV2YWx1YXRlKG9iamVjdCk7CiAgfQp9KTsKCmlmIChQcm90b3R5 cGUuQnJvd3Nlci5XZWJLaXQgfHwgUHJvdG90eXBlLkJyb3dzZXIuSUUpIE9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGVzY2FwZUhUTUw6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJl cGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOwogIH0sCiAg dW5lc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnN0cmlw VGFncygpLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5yZXBsYWNlKC8mbHQ7L2csJzwn KS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0pOwoKU3RyaW5nLnByb3RvdHlw ZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1bmN0aW9uKHJlcGxhY2VtZW50 KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlcGxhY2VtZW50KSkgcmV0dXJu IHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShyZXBs YWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiB0ZW1w bGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0cmluZy5wcm90b3R5cGUucGFy c2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsKCk9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAgZGl2OiAg ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9jdW1lbnQu Y3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVI VE1MLmRpdi5hcHBlbmRDaGlsZChTdHJpbmcucHJvdG90eXBlLmVzY2FwZUhUTUwu dGV4dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxp emU6IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlzLnRlbXBs YXRlID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVybiA9IHBh dHRlcm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0ZTogZnVu Y3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24ob2JqZWN0 LnRvVGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBvYmplY3Qu dG9UZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlzLnRlbXBs YXRlLmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBp ZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBiZWZvcmUg PSBtYXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwnKSByZXR1 cm4gbWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHByID0gbWF0 Y2hbM107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/Oi4qP1te XFxdKT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMo ZXhwcik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVmb3JlOwoK ICAgICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIgY29tcCA9 IG1hdGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIoJ1xcXFxd JywgJ10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21wXTsKICAg ICAgICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJyZWFrOwog ICAgICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hbM10gPyBt YXRjaFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAgIG1hdGNo ID0gcGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1cm4gYmVm b3JlICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9KTsKVGVt cGxhdGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87Cgp2YXIg JGJyZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDogZnVuY3Rp b24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7CiAgICB0 cnkgewogICAgICB0aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAg aXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgrKyk7CiAgICAgIH0p OwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAoZSAhPSAkYnJlYWspIHRocm93 IGU7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9LAoKICBlYWNoU2xpY2U6IGZ1 bmN0aW9uKG51bWJlciwgaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRl eCA9IC1udW1iZXIsIHNsaWNlcyA9IFtdLCBhcnJheSA9IHRoaXMudG9BcnJheSgp OwogICAgaWYgKG51bWJlciA8IDEpIHJldHVybiBhcnJheTsKICAgIHdoaWxlICgo aW5kZXggKz0gbnVtYmVyKSA8IGFycmF5Lmxlbmd0aCkKICAgICAgc2xpY2VzLnB1 c2goYXJyYXkuc2xpY2UoaW5kZXgsIGluZGV4K251bWJlcikpOwogICAgcmV0dXJu IHNsaWNlcy5jb2xsZWN0KGl0ZXJhdG9yLCBjb250ZXh0KTsKICB9LAoKICBhbGw6 IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0 ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdCA9IHRydWU7CiAg ICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJlc3Vs dCA9IHJlc3VsdCAmJiAhIWl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGlu ZGV4KTsKICAgICAgaWYgKCFyZXN1bHQpIHRocm93ICRicmVhazsKICAgIH0pOwog ICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBhbnk6IGZ1bmN0aW9uKGl0ZXJhdG9y LCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlw ZS5LOwogICAgdmFyIHJlc3VsdCA9IGZhbHNlOwogICAgdGhpcy5lYWNoKGZ1bmN0 aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAocmVzdWx0ID0gISFpdGVyYXRv ci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpCiAgICAgICAgdGhyb3cgJGJy ZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGNvbGxlY3Q6 IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0 ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAg IHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmVzdWx0 cy5wdXNoKGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KSk7CiAg ICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIGRldGVjdDogZnVuY3Rp b24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciByZXN1bHQ7CiAgICB0aGlz LmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChpdGVyYXRv ci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpIHsKICAgICAgICByZXN1bHQg PSB2YWx1ZTsKICAgICAgICB0aHJvdyAkYnJlYWs7CiAgICAgIH0KICAgIH0pOwog ICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBmaW5kQWxsOiBmdW5jdGlvbihpdGVy YXRvciwgY29udGV4dCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMu ZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKGl0ZXJhdG9y LmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1 c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBn cmVwOiBmdW5jdGlvbihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBp dGVyYXRvciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3Vs dHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZpbHRlcikpCiAgICAg IGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0aGlzLmVhY2goZnVu Y3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0ZXIubWF0Y2godmFs dWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvci5jYWxsKGNvbnRleHQs IHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9 LAoKICBpbmNsdWRlOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIGlmIChPYmplY3Qu aXNGdW5jdGlvbih0aGlzLmluZGV4T2YpKQogICAgICBpZiAodGhpcy5pbmRleE9m KG9iamVjdCkgIT0gLTEpIHJldHVybiB0cnVlOwoKICAgIHZhciBmb3VuZCA9IGZh bHNlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIGlmICh2 YWx1ZSA9PSBvYmplY3QpIHsKICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAg dGhyb3cgJGJyZWFrOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiBmb3VuZDsK ICB9LAoKICBpbkdyb3Vwc09mOiBmdW5jdGlvbihudW1iZXIsIGZpbGxXaXRoKSB7 CiAgICBmaWxsV2l0aCA9IE9iamVjdC5pc1VuZGVmaW5lZChmaWxsV2l0aCkgPyBu dWxsIDogZmlsbFdpdGg7CiAgICByZXR1cm4gdGhpcy5lYWNoU2xpY2UobnVtYmVy LCBmdW5jdGlvbihzbGljZSkgewogICAgICB3aGlsZShzbGljZS5sZW5ndGggPCBu dW1iZXIpIHNsaWNlLnB1c2goZmlsbFdpdGgpOwogICAgICByZXR1cm4gc2xpY2U7 CiAgICB9KTsKICB9LAoKICBpbmplY3Q6IGZ1bmN0aW9uKG1lbW8sIGl0ZXJhdG9y LCBjb250ZXh0KSB7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4 KSB7CiAgICAgIG1lbW8gPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG1lbW8sIHZh bHVlLCBpbmRleCk7CiAgICB9KTsKICAgIHJldHVybiBtZW1vOwogIH0sCgogIGlu dm9rZTogZnVuY3Rpb24obWV0aG9kKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3Vt ZW50cykuc2xpY2UoMSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24odmFs dWUpIHsKICAgICAgcmV0dXJuIHZhbHVlW21ldGhvZF0uYXBwbHkodmFsdWUsIGFy Z3MpOwogICAgfSk7CiAgfSwKCiAgbWF4OiBmdW5jdGlvbihpdGVyYXRvciwgY29u dGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvciB8fCBQcm90b3R5cGUuSzsK ICAgIHZhciByZXN1bHQ7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGlu ZGV4KSB7CiAgICAgIHZhbHVlID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1 ZSwgaW5kZXgpOwogICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFsdWUgPj0g cmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1 cm4gcmVzdWx0OwogIH0sCgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRl eHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90eXBlLks7CiAg ICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRl eCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUs IGluZGV4KTsKICAgICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IHZhbHVlIDwgcmVz dWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1cm4g cmVzdWx0OwogIH0sCgogIHBhcnRpdGlvbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNv bnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90eXBlLks7 CiAgICB2YXIgdHJ1ZXMgPSBbXSwgZmFsc2VzID0gW107CiAgICB0aGlzLmVhY2go ZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIChpdGVyYXRvci5jYWxsKGNv bnRleHQsIHZhbHVlLCBpbmRleCkgPwogICAgICAgIHRydWVzIDogZmFsc2VzKS5w dXNoKHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuIFt0cnVlcywgZmFsc2VzXTsK ICB9LAoKICBwbHVjazogZnVuY3Rpb24ocHJvcGVydHkpIHsKICAgIHZhciByZXN1 bHRzID0gW107CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUpIHsKICAgICAg cmVzdWx0cy5wdXNoKHZhbHVlW3Byb3BlcnR5XSk7CiAgICB9KTsKICAgIHJldHVy biByZXN1bHRzOwogIH0sCgogIHJlamVjdDogZnVuY3Rpb24oaXRlcmF0b3IsIGNv bnRleHQpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB0aGlzLmVhY2goZnVu Y3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmICghaXRlcmF0b3IuY2FsbChj b250ZXh0LCB2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2YWx1 ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRCeTog ZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHJldHVybiB0aGlzLm1h cChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHsKICAgICAg ICB2YWx1ZTogdmFsdWUsCiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdG9yLmNhbGwo Y29udGV4dCwgdmFsdWUsIGluZGV4KQogICAgICB9OwogICAgfSkuc29ydChmdW5j dGlvbihsZWZ0LCByaWdodCkgewogICAgICB2YXIgYSA9IGxlZnQuY3JpdGVyaWEs IGIgPSByaWdodC5jcml0ZXJpYTsKICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBh ID4gYiA/IDEgOiAwOwogICAgfSkucGx1Y2soJ3ZhbHVlJyk7CiAgfSwKCiAgdG9B cnJheTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5tYXAoKTsKICB9LAoK ICB6aXA6IGZ1bmN0aW9uKCkgewogICAgdmFyIGl0ZXJhdG9yID0gUHJvdG90eXBl LkssIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1bmN0 aW9uKGFyZ3MubGFzdCgpKSkKICAgICAgaXRlcmF0b3IgPSBhcmdzLnBvcCgpOwoK ICAgIHZhciBjb2xsZWN0aW9ucyA9IFt0aGlzXS5jb25jYXQoYXJncykubWFwKCRB KTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsK ICAgICAgcmV0dXJuIGl0ZXJhdG9yKGNvbGxlY3Rpb25zLnBsdWNrKGluZGV4KSk7 CiAgICB9KTsKICB9LAoKICBzaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0 aGlzLnRvQXJyYXkoKS5sZW5ndGg7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24o KSB7CiAgICByZXR1cm4gJyM8RW51bWVyYWJsZTonICsgdGhpcy50b0FycmF5KCku aW5zcGVjdCgpICsgJz4nOwogIH0KfTsKCk9iamVjdC5leHRlbmQoRW51bWVyYWJs ZSwgewogIG1hcDogICAgIEVudW1lcmFibGUuY29sbGVjdCwKICBmaW5kOiAgICBF bnVtZXJhYmxlLmRldGVjdCwKICBzZWxlY3Q6ICBFbnVtZXJhYmxlLmZpbmRBbGws CiAgZmlsdGVyOiAgRW51bWVyYWJsZS5maW5kQWxsLAogIG1lbWJlcjogIEVudW1l cmFibGUuaW5jbHVkZSwKICBlbnRyaWVzOiBFbnVtZXJhYmxlLnRvQXJyYXksCiAg ZXZlcnk6ICAgRW51bWVyYWJsZS5hbGwsCiAgc29tZTogICAgRW51bWVyYWJsZS5h bnkKfSk7CmZ1bmN0aW9uICRBKGl0ZXJhYmxlKSB7CiAgaWYgKCFpdGVyYWJsZSkg cmV0dXJuIFtdOwogIGlmIChpdGVyYWJsZS50b0FycmF5KSByZXR1cm4gaXRlcmFi bGUudG9BcnJheSgpOwogIHZhciBsZW5ndGggPSBpdGVyYWJsZS5sZW5ndGggfHwg MCwgcmVzdWx0cyA9IG5ldyBBcnJheShsZW5ndGgpOwogIHdoaWxlIChsZW5ndGgt LSkgcmVzdWx0c1tsZW5ndGhdID0gaXRlcmFibGVbbGVuZ3RoXTsKICByZXR1cm4g cmVzdWx0czsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogICRB ID0gZnVuY3Rpb24oaXRlcmFibGUpIHsKICAgIGlmICghaXRlcmFibGUpIHJldHVy biBbXTsKICAgIC8vIEluIFNhZmFyaSwgb25seSB1c2UgdGhlIGB0b0FycmF5YCBt ZXRob2QgaWYgaXQncyBub3QgYSBOb2RlTGlzdC4KICAgIC8vIEEgTm9kZUxpc3Qg aXMgYSBmdW5jdGlvbiwgaGFzIGFuIGZ1bmN0aW9uIGBpdGVtYCBwcm9wZXJ0eSwg YW5kIGEgbnVtZXJpYwogICAgLy8gYGxlbmd0aGAgcHJvcGVydHkuIEFkYXB0ZWQg ZnJvbSBHb29nbGUgRG9jdHlwZS4KICAgIGlmICghKHR5cGVvZiBpdGVyYWJsZSA9 PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaXRlcmFibGUubGVuZ3RoID09PQogICAg ICAgICdudW1iZXInICYmIHR5cGVvZiBpdGVyYWJsZS5pdGVtID09PSAnZnVuY3Rp b24nKSAmJiBpdGVyYWJsZS50b0FycmF5KQogICAgICByZXR1cm4gaXRlcmFibGUu dG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxlLmxlbmd0aCB8fCAw LCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3Ro LS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgICByZXR1 cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7CgpPYmplY3QuZXh0 ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7CgppZiAoIUFycmF5LnBy b3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9yZXZlcnNlID0gQXJy YXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3Rv dHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgZm9yICh2 YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysp CiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNsZWFyOiBmdW5jdGlv bigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVybiB0aGlzOwogIH0s CgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzWzBdOwogIH0s CgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXNbdGhpcy5sZW5n dGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVy biB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFs dWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46IGZ1bmN0aW9uKCkg ewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJheSwgdmFs dWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmplY3QuaXNBcnJheSh2 YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2YWx1ZV0pOwogICAg fSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdmFsdWVz ID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlv bih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlKHZhbHVlKTsK ICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlubGluZSkgewogICAg cmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRoaXMudG9BcnJheSgp KS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rpb24oKSB7CiAgICBy ZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNbMF07CiAgfSwKCiAg dW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4gdGhpcy5pbmplY3Qo W10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKDAg PT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAhPSB2YWx1ZSA6ICFh cnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7 CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgogIGludGVyc2VjdDog ZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVuaXEoKS5maW5kQWxs KGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5LmRldGVjdChmdW5j dGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUgfSk7CiAgICB9KTsK ICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gW10uY29uY2F0 KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo aXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCcsICcpICsg J10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzdWx0 cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB2 YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAgICAgIGlmICghT2Jq ZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNoKHZhbHVlKTsKICAg IH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbignLCAnKSArICddJzsK ICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEuNiBpbXBsZW1lbnRh dGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0aW9uKEFycmF5LnBy b3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUuX2VhY2ggPSBBcnJh eS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4 T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oaXRlbSwgaSkg ewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAg aWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsgaSA8IGxlbmd0aDsg aSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOwogIHJldHVy biAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSBBcnJh eS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihpdGVtLCBpKSB7CiAg aSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAgPyB0aGlzLmxlbmd0 aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNlKDAsIGkpLnJldmVy c2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDApID8gbiA6IGkgLSBu IC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gQXJyYXkucHJvdG90 eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAgaWYgKCFPYmplY3Qu aXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmluZyA9IHN0cmluZy5z dHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQoL1xzKy8pIDog W107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAgQXJyYXkucHJv dG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFycmF5ID0gW107 CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7IGkgPCBs ZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZvciAodmFyIGkg PSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysp IHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50c1tpXSkpIHsKICAg ICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBhcmd1bWVudHNbaV0u bGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAgICAgIGFycmF5LnB1 c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBhcnJh eS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBh cnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnByb3RvdHlwZSwgewog IHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvUGFk ZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oaXRlcmF0 b3IsIGNvbnRleHQpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2goaXRlcmF0 b3IsIGNvbnRleHQpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9QYWRkZWRT dHJpbmc6IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBzdHJpbmcg PSB0aGlzLnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAnMCcudGlt ZXMobGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwKCiAgdG9K U09OOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlzKSA/IHRo aXMudG9TdHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyByb3VuZCBj ZWlsIGZsb29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJlci5wcm90 b3R5cGVbbWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsKfSk7CmZ1 bmN0aW9uICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9 OwoKdmFyIEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1bmN0aW9u KCkgewoKICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7CiAgICBp ZiAoT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsKICAgIHJl dHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nLmludGVy cHJldCh2YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmplY3QuaXNI YXNoKG9iamVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5jbG9uZShv YmplY3QpOwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsK ICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAgICAgIHZh ciB2YWx1ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwgdmFsdWVd OwogICAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFsdWUgPSB2 YWx1ZTsKICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAgfSwKCiAg ICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMu X29iamVjdFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVuY3Rpb24o a2V5KSB7CiAgICAgIC8vIHNpbXVsYXRpbmcgcG9vcmx5IHN1cHBvcnRlZCBoYXNP d25Qcm9wZXJ0eQogICAgICBpZiAodGhpcy5fb2JqZWN0W2tleV0gIT09IE9iamVj dC5wcm90b3R5cGVba2V5XSkKICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0W2tl eV07CiAgICB9LAoKICAgIHVuc2V0OiBmdW5jdGlvbihrZXkpIHsKICAgICAgdmFy IHZhbHVlID0gdGhpcy5fb2JqZWN0W2tleV07CiAgICAgIGRlbGV0ZSB0aGlzLl9v YmplY3Rba2V5XTsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfSwKCiAgICB0b09i amVjdDogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBPYmplY3QuY2xvbmUodGhp cy5fb2JqZWN0KTsKICAgIH0sCgogICAga2V5czogZnVuY3Rpb24oKSB7CiAgICAg IHJldHVybiB0aGlzLnBsdWNrKCdrZXknKTsKICAgIH0sCgogICAgdmFsdWVzOiBm dW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2soJ3ZhbHVlJyk7CiAg ICB9LAoKICAgIGluZGV4OiBmdW5jdGlvbih2YWx1ZSkgewogICAgICB2YXIgbWF0 Y2ggPSB0aGlzLmRldGVjdChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJu IHBhaXIudmFsdWUgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0dXJuIG1h dGNoICYmIG1hdGNoLmtleTsKICAgIH0sCgogICAgbWVyZ2U6IGZ1bmN0aW9uKG9i amVjdCkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnVwZGF0ZShvYmplY3Qp OwogICAgfSwKCiAgICB1cGRhdGU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgICBy ZXR1cm4gbmV3IEhhc2gob2JqZWN0KS5pbmplY3QodGhpcywgZnVuY3Rpb24ocmVz dWx0LCBwYWlyKSB7CiAgICAgICAgcmVzdWx0LnNldChwYWlyLmtleSwgcGFpci52 YWx1ZSk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSk7CiAgICB9LAoK ICAgIHRvUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhp cy5pbmplY3QoW10sIGZ1bmN0aW9uKHJlc3VsdHMsIHBhaXIpIHsKICAgICAgICB2 YXIga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhaXIua2V5KSwgdmFsdWVzID0g cGFpci52YWx1ZTsKCiAgICAgICAgaWYgKHZhbHVlcyAmJiB0eXBlb2YgdmFsdWVz ID09ICdvYmplY3QnKSB7CiAgICAgICAgICBpZiAoT2JqZWN0LmlzQXJyYXkodmFs dWVzKSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuY29uY2F0KHZhbHVlcy5t YXAodG9RdWVyeVBhaXIuY3Vycnkoa2V5KSkpOwogICAgICAgIH0gZWxzZSByZXN1 bHRzLnB1c2godG9RdWVyeVBhaXIoa2V5LCB2YWx1ZXMpKTsKICAgICAgICByZXR1 cm4gcmVzdWx0czsKICAgICAgfSkuam9pbignJicpOwogICAgfSwKCiAgICBpbnNw ZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICcjPEhhc2g6eycgKyB0aGlz Lm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJuIHBhaXIubWFwKE9i amVjdC5pbnNwZWN0KS5qb2luKCc6ICcpOwogICAgICB9KS5qb2luKCcsICcpICsg J30+JzsKICAgIH0sCgogICAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgICAgcmV0 dXJuIE9iamVjdC50b0pTT04odGhpcy50b09iamVjdCgpKTsKICAgIH0sCgogICAg Y2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IEhhc2godGhpcyk7 CiAgICB9CiAgfQp9KSgpKTsKCkhhc2gucHJvdG90eXBlLnRvVGVtcGxhdGVSZXBs YWNlbWVudHMgPSBIYXNoLnByb3RvdHlwZS50b09iamVjdDsKSGFzaC5mcm9tID0g JEg7CnZhciBPYmplY3RSYW5nZSA9IENsYXNzLmNyZWF0ZShFbnVtZXJhYmxlLCB7 CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7 CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICAg IHRoaXMuZXhjbHVzaXZlID0gZXhjbHVzaXZlOwogIH0sCgogIF9lYWNoOiBmdW5j dGlvbihpdGVyYXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy5zdGFydDsKICAg IHdoaWxlICh0aGlzLmluY2x1ZGUodmFsdWUpKSB7CiAgICAgIGl0ZXJhdG9yKHZh bHVlKTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWNjKCk7CiAgICB9CiAgfSwKCiAg aW5jbHVkZTogZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICh2YWx1ZSA8IHRoaXMu c3RhcnQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmICh0aGlzLmV4Y2x1c2l2 ZSkKICAgICAgcmV0dXJuIHZhbHVlIDwgdGhpcy5lbmQ7CiAgICByZXR1cm4gdmFs dWUgPD0gdGhpcy5lbmQ7CiAgfQp9KTsKCnZhciAkUiA9IGZ1bmN0aW9uKHN0YXJ0 LCBlbmQsIGV4Y2x1c2l2ZSkgewogIHJldHVybiBuZXcgT2JqZWN0UmFuZ2Uoc3Rh cnQsIGVuZCwgZXhjbHVzaXZlKTsKfTsKCnZhciBBamF4ID0gewogIGdldFRyYW5z cG9ydDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gVHJ5LnRoZXNlKAogICAgICBm dW5jdGlvbigpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LAogICAgICBm dW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxI VFRQJyl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmpl Y3QoJ01pY3Jvc29mdC5YTUxIVFRQJyl9CiAgICApIHx8IGZhbHNlOwogIH0sCgog IGFjdGl2ZVJlcXVlc3RDb3VudDogMAp9OwoKQWpheC5SZXNwb25kZXJzID0gewog IHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsK ICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7CiAgfSwKCiAgcmVn aXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYgKCF0aGlzLmluY2x1 ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJzLnB1c2gocmVzcG9u ZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihyZXNwb25kZXIpIHsK ICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVycy53aXRob3V0KHJl c3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCBy ZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMuZWFjaChmdW5jdGlv bihyZXNwb25kZXIpIHsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlc3Bv bmRlcltjYWxsYmFja10pKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3Bv bmRlcltjYWxsYmFja10uYXBwbHkocmVzcG9uZGVyLCBbcmVxdWVzdCwgdHJhbnNw b3J0LCBqc29uXSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAgIH0KICAg IH0pOwogIH0KfTsKCk9iamVjdC5leHRlbmQoQWpheC5SZXNwb25kZXJzLCBFbnVt ZXJhYmxlKTsKCkFqYXguUmVzcG9uZGVycy5yZWdpc3Rlcih7CiAgb25DcmVhdGU6 ICAgZnVuY3Rpb24oKSB7IEFqYXguYWN0aXZlUmVxdWVzdENvdW50KysgfSwKICBv bkNvbXBsZXRlOiBmdW5jdGlvbigpIHsgQWpheC5hY3RpdmVSZXF1ZXN0Q291bnQt LSB9Cn0pOwoKQWpheC5CYXNlID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXpl OiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB7CiAgICAg IG1ldGhvZDogICAgICAgJ3Bvc3QnLAogICAgICBhc3luY2hyb25vdXM6IHRydWUs CiAgICAgIGNvbnRlbnRUeXBlOiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs ZW5jb2RlZCcsCiAgICAgIGVuY29kaW5nOiAgICAgJ1VURi04JywKICAgICAgcGFy YW1ldGVyczogICAnJywKICAgICAgZXZhbEpTT046ICAgICB0cnVlLAogICAgICBl dmFsSlM6ICAgICAgIHRydWUKICAgIH07CiAgICBPYmplY3QuZXh0ZW5kKHRoaXMu b3B0aW9ucywgb3B0aW9ucyB8fCB7IH0pOwoKICAgIHRoaXMub3B0aW9ucy5tZXRo b2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCk7CgogICAgaWYg KE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAg IHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRl cnMudG9RdWVyeVBhcmFtcygpOwogICAgZWxzZSBpZiAoT2JqZWN0LmlzSGFzaCh0 aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJh bWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9PYmplY3QoKTsKICB9 Cn0pOwoKQWpheC5SZXF1ZXN0ID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewog IF9jb21wbGV0ZTogZmFsc2UsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgdXJsLCBvcHRpb25zKSB7CiAgICAkc3VwZXIob3B0aW9ucyk7CiAgICB0aGlz LnRyYW5zcG9ydCA9IEFqYXguZ2V0VHJhbnNwb3J0KCk7CiAgICB0aGlzLnJlcXVl c3QodXJsKTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbih1cmwpIHsKICAgIHRo aXMudXJsID0gdXJsOwogICAgdGhpcy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0 aG9kOwogICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jbG9uZSh0aGlzLm9wdGlvbnMu cGFyYW1ldGVycyk7CgogICAgaWYgKCFbJ2dldCcsICdwb3N0J10uaW5jbHVkZSh0 aGlzLm1ldGhvZCkpIHsKICAgICAgLy8gc2ltdWxhdGUgb3RoZXIgdmVyYnMgb3Zl ciBwb3N0CiAgICAgIHBhcmFtc1snX21ldGhvZCddID0gdGhpcy5tZXRob2Q7CiAg ICAgIHRoaXMubWV0aG9kID0gJ3Bvc3QnOwogICAgfQoKICAgIHRoaXMucGFyYW1l dGVycyA9IHBhcmFtczsKCiAgICBpZiAocGFyYW1zID0gT2JqZWN0LnRvUXVlcnlT dHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwgYXBwZW5kIHBhcmFt ZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSAnZ2V0JykKICAg ICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgnPycpID8gJyYnIDog Jz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1ZXJvcnxTYWZhcml8 S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAgICAgICAgcGFyYW1z ICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIHZhciByZXNwb25zZSA9 IG5ldyBBamF4LlJlc3BvbnNlKHRoaXMpOwogICAgICBpZiAodGhpcy5vcHRpb25z Lm9uQ3JlYXRlKSB0aGlzLm9wdGlvbnMub25DcmVhdGUocmVzcG9uc2UpOwogICAg ICBBamF4LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uQ3JlYXRlJywgdGhpcywgcmVz cG9uc2UpOwoKICAgICAgdGhpcy50cmFuc3BvcnQub3Blbih0aGlzLm1ldGhvZC50 b1VwcGVyQ2FzZSgpLCB0aGlzLnVybCwKICAgICAgICB0aGlzLm9wdGlvbnMuYXN5 bmNocm9ub3VzKTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3Vz KSB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUuYmluZCh0aGlzKS5kZWZlcigxKTsK CiAgICAgIHRoaXMudHJhbnNwb3J0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMu b25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLnNldFJlcXVlc3RI ZWFkZXJzKCk7CgogICAgICB0aGlzLmJvZHkgPSB0aGlzLm1ldGhvZCA9PSAncG9z dCcgPyAodGhpcy5vcHRpb25zLnBvc3RCb2R5IHx8IHBhcmFtcykgOiBudWxsOwog ICAgICB0aGlzLnRyYW5zcG9ydC5zZW5kKHRoaXMuYm9keSk7CgogICAgICAvKiBG b3JjZSBGaXJlZm94IHRvIGhhbmRsZSByZWFkeSBzdGF0ZSA0IGZvciBzeW5jaHJv bm91cyByZXF1ZXN0cyAqLwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5hc3luY2hy b25vdXMgJiYgdGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSkKICAgICAg ICB0aGlzLm9uU3RhdGVDaGFuZ2UoKTsKCiAgICB9CiAgICBjYXRjaCAoZSkgewog ICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIG9u U3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlYWR5U3RhdGUgPSB0 aGlzLnRyYW5zcG9ydC5yZWFkeVN0YXRlOwogICAgaWYgKHJlYWR5U3RhdGUgPiAx ICYmICEoKHJlYWR5U3RhdGUgPT0gNCkgJiYgdGhpcy5fY29tcGxldGUpKQogICAg ICB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUodGhpcy50cmFuc3BvcnQucmVhZHlT dGF0ZSk7CiAgfSwKCiAgc2V0UmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkgewog ICAgdmFyIGhlYWRlcnMgPSB7CiAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hN TEh0dHBSZXF1ZXN0JywKICAgICAgJ1gtUHJvdG90eXBlLVZlcnNpb24nOiBQcm90 b3R5cGUuVmVyc2lvbiwKICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2phdmFzY3JpcHQs IHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8qJwogICAg fTsKCiAgICBpZiAodGhpcy5tZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAgIGhlYWRl cnNbJ0NvbnRlbnQtdHlwZSddID0gdGhpcy5vcHRpb25zLmNvbnRlbnRUeXBlICsK ICAgICAgICAodGhpcy5vcHRpb25zLmVuY29kaW5nID8gJzsgY2hhcnNldD0nICsg dGhpcy5vcHRpb25zLmVuY29kaW5nIDogJycpOwoKICAgICAgLyogRm9yY2UgIkNv bm5lY3Rpb246IGNsb3NlIiBmb3Igb2xkZXIgTW96aWxsYSBicm93c2VycyB0byB3 b3JrCiAgICAgICAqIGFyb3VuZCBhIGJ1ZyB3aGVyZSBYTUxIdHRwUmVxdWVzdCBz ZW5kcyBhbiBpbmNvcnJlY3QKICAgICAgICogQ29udGVudC1sZW5ndGggaGVhZGVy LiBTZWUgTW96aWxsYSBCdWd6aWxsYSAjMjQ2NjUxLgogICAgICAgKi8KICAgICAg aWYgKHRoaXMudHJhbnNwb3J0Lm92ZXJyaWRlTWltZVR5cGUgJiYKICAgICAgICAg IChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9HZWNrb1wvKFxkezR9KS8pIHx8 IFswLDIwMDVdKVsxXSA8IDIwMDUpCiAgICAgICAgICAgIGhlYWRlcnNbJ0Nvbm5l Y3Rpb24nXSA9ICdjbG9zZSc7CiAgICB9CgogICAgLy8gdXNlci1kZWZpbmVkIGhl YWRlcnMKICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlcXVlc3RIZWFkZXJz ID09ICdvYmplY3QnKSB7CiAgICAgIHZhciBleHRyYXMgPSB0aGlzLm9wdGlvbnMu cmVxdWVzdEhlYWRlcnM7CgogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oZXh0 cmFzLnB1c2gpKQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBleHRy YXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpCiAgICAgICAgICBoZWFkZXJz W2V4dHJhc1tpXV0gPSBleHRyYXNbaSsxXTsKICAgICAgZWxzZQogICAgICAgICRI KGV4dHJhcykuZWFjaChmdW5jdGlvbihwYWlyKSB7IGhlYWRlcnNbcGFpci5rZXld ID0gcGFpci52YWx1ZSB9KTsKICAgIH0KCiAgICBmb3IgKHZhciBuYW1lIGluIGhl YWRlcnMpCiAgICAgIHRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIobmFt ZSwgaGVhZGVyc1tuYW1lXSk7CiAgfSwKCiAgc3VjY2VzczogZnVuY3Rpb24oKSB7 CiAgICB2YXIgc3RhdHVzID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgIHJldHVybiAh c3RhdHVzIHx8IChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCk7CiAgfSwK CiAgZ2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVy biB0aGlzLnRyYW5zcG9ydC5zdGF0dXMgfHwgMDsKICAgIH0gY2F0Y2ggKGUpIHsg cmV0dXJuIDAgfQogIH0sCgogIHJlc3BvbmRUb1JlYWR5U3RhdGU6IGZ1bmN0aW9u KHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFqYXguUmVxdWVzdC5FdmVu dHNbcmVhZHlTdGF0ZV0sIHJlc3BvbnNlID0gbmV3IEFqYXguUmVzcG9uc2UodGhp cyk7CgogICAgaWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsK ICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0 aW9uc1snb24nICsgcmVzcG9uc2Uuc3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9w dGlvbnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWls dXJlJyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNw b25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsK ICAgICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgICB9CgogICAg ICB2YXIgY29udGVudFR5cGUgPSByZXNwb25zZS5nZXRIZWFkZXIoJ0NvbnRlbnQt dHlwZScpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmV2YWxKUyA9PSAnZm9yY2Un CiAgICAgICAgICB8fCAodGhpcy5vcHRpb25zLmV2YWxKUyAmJiB0aGlzLmlzU2Ft ZU9yaWdpbigpICYmIGNvbnRlbnRUeXBlCiAgICAgICAgICAmJiBjb250ZW50VHlw ZS5tYXRjaCgvXlxzKih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21h KXNjcmlwdCg7LiopP1xzKiQvaSkpKQogICAgICAgIHRoaXMuZXZhbFJlc3BvbnNl KCk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgKHRoaXMub3B0aW9uc1snb24nICsg c3RhdGVdIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVz cG9uc2UuaGVhZGVySlNPTik7CiAgICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRj aCgnb24nICsgc3RhdGUsIHRoaXMsIHJlc3BvbnNlLCByZXNwb25zZS5oZWFkZXJK U09OKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2Vw dGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRlJykgewog ICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1cAogICAg ICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90b3R5cGUu ZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBpc1NhbWVPcmlnaW46IGZ1bmN0 aW9uKCkgewogICAgdmFyIG0gPSB0aGlzLnVybC5tYXRjaCgvXlxzKmh0dHBzPzpc L1wvW15cL10qLyk7CiAgICByZXR1cm4gIW0gfHwgKG1bMF0gPT0gJyN7cHJvdG9j b2x9Ly8je2RvbWFpbn0je3BvcnR9Jy5pbnRlcnBvbGF0ZSh7CiAgICAgIHByb3Rv Y29sOiBsb2NhdGlvbi5wcm90b2NvbCwKICAgICAgZG9tYWluOiBkb2N1bWVudC5k b21haW4sCiAgICAgIHBvcnQ6IGxvY2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlv bi5wb3J0IDogJycKICAgIH0pKTsKICB9LAoKICBnZXRIZWFkZXI6IGZ1bmN0aW9u KG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5n ZXRSZXNwb25zZUhlYWRlcihuYW1lKSB8fCBudWxsOwogICAgfSBjYXRjaCAoZSkg eyByZXR1cm4gbnVsbCB9CiAgfSwKCiAgZXZhbFJlc3BvbnNlOiBmdW5jdGlvbigp IHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBldmFsKCh0aGlzLnRyYW5zcG9ydC5y ZXNwb25zZVRleHQgfHwgJycpLnVuZmlsdGVySlNPTigpKTsKICAgIH0gY2F0Y2gg KGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9 LAoKICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7CiAg ICAodGhpcy5vcHRpb25zLm9uRXhjZXB0aW9uIHx8IFByb3RvdHlwZS5lbXB0eUZ1 bmN0aW9uKSh0aGlzLCBleGNlcHRpb24pOwogICAgQWpheC5SZXNwb25kZXJzLmRp c3BhdGNoKCdvbkV4Y2VwdGlvbicsIHRoaXMsIGV4Y2VwdGlvbik7CiAgfQp9KTsK CkFqYXguUmVxdWVzdC5FdmVudHMgPQogIFsnVW5pbml0aWFsaXplZCcsICdMb2Fk aW5nJywgJ0xvYWRlZCcsICdJbnRlcmFjdGl2ZScsICdDb21wbGV0ZSddOwoKQWph eC5SZXNwb25zZSA9IENsYXNzLmNyZWF0ZSh7CiAgaW5pdGlhbGl6ZTogZnVuY3Rp b24ocmVxdWVzdCl7CiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgdmFy IHRyYW5zcG9ydCAgPSB0aGlzLnRyYW5zcG9ydCAgPSByZXF1ZXN0LnRyYW5zcG9y dCwKICAgICAgICByZWFkeVN0YXRlID0gdGhpcy5yZWFkeVN0YXRlID0gdHJhbnNw b3J0LnJlYWR5U3RhdGU7CgogICAgaWYoKHJlYWR5U3RhdGUgPiAyICYmICFQcm90 b3R5cGUuQnJvd3Nlci5JRSkgfHwgcmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgIHRo aXMuc3RhdHVzICAgICAgID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgICAgdGhpcy5z dGF0dXNUZXh0ICAgPSB0aGlzLmdldFN0YXR1c1RleHQoKTsKICAgICAgdGhpcy5y ZXNwb25zZVRleHQgPSBTdHJpbmcuaW50ZXJwcmV0KHRyYW5zcG9ydC5yZXNwb25z ZVRleHQpOwogICAgICB0aGlzLmhlYWRlckpTT04gICA9IHRoaXMuX2dldEhlYWRl ckpTT04oKTsKICAgIH0KCiAgICBpZihyZWFkeVN0YXRlID09IDQpIHsKICAgICAg dmFyIHhtbCA9IHRyYW5zcG9ydC5yZXNwb25zZVhNTDsKICAgICAgdGhpcy5yZXNw b25zZVhNTCAgPSBPYmplY3QuaXNVbmRlZmluZWQoeG1sKSA/IG51bGwgOiB4bWw7 CiAgICAgIHRoaXMucmVzcG9uc2VKU09OID0gdGhpcy5fZ2V0UmVzcG9uc2VKU09O KCk7CiAgICB9CiAgfSwKCiAgc3RhdHVzOiAgICAgIDAsCiAgc3RhdHVzVGV4dDog JycsCgogIGdldFN0YXR1czogQWpheC5SZXF1ZXN0LnByb3RvdHlwZS5nZXRTdGF0 dXMsCgogIGdldFN0YXR1c1RleHQ6IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAg ICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnN0YXR1c1RleHQgfHwgJyc7CiAgICB9 IGNhdGNoIChlKSB7IHJldHVybiAnJyB9CiAgfSwKCiAgZ2V0SGVhZGVyOiBBamF4 LlJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciwKCiAgZ2V0QWxsSGVhZGVyczog ZnVuY3Rpb24oKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdGhpcy5nZXRBbGxS ZXNwb25zZUhlYWRlcnMoKTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGwg fQogIH0sCgogIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihuYW1lKSB7CiAg ICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VIZWFkZXIobmFtZSk7 CiAgfSwKCiAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsK ICB9LAoKICBfZ2V0SGVhZGVySlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIganNv biA9IHRoaXMuZ2V0SGVhZGVyKCdYLUpTT04nKTsKICAgIGlmICghanNvbikgcmV0 dXJuIG51bGw7CiAgICBqc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShq c29uKSk7CiAgICB0cnkgewogICAgICByZXR1cm4ganNvbi5ldmFsSlNPTih0aGlz LnJlcXVlc3Qub3B0aW9ucy5zYW5pdGl6ZUpTT04gfHwKICAgICAgICAhdGhpcy5y ZXF1ZXN0LmlzU2FtZU9yaWdpbigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg dGhpcy5yZXF1ZXN0LmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgog IF9nZXRSZXNwb25zZUpTT046IGZ1bmN0aW9uKCkgewogICAgdmFyIG9wdGlvbnMg PSB0aGlzLnJlcXVlc3Qub3B0aW9uczsKICAgIGlmICghb3B0aW9ucy5ldmFsSlNP TiB8fCAob3B0aW9ucy5ldmFsSlNPTiAhPSAnZm9yY2UnICYmCiAgICAgICEodGhp cy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpIHx8ICcnKS5pbmNsdWRlKCdhcHBs aWNhdGlvbi9qc29uJykpIHx8CiAgICAgICAgdGhpcy5yZXNwb25zZVRleHQuYmxh bmsoKSkKICAgICAgICAgIHJldHVybiBudWxsOwogICAgdHJ5IHsKICAgICAgcmV0 dXJuIHRoaXMucmVzcG9uc2VUZXh0LmV2YWxKU09OKG9wdGlvbnMuc2FuaXRpemVK U09OIHx8CiAgICAgICAgIXRoaXMucmVxdWVzdC5pc1NhbWVPcmlnaW4oKSk7CiAg ICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMucmVxdWVzdC5kaXNwYXRjaEV4Y2Vw dGlvbihlKTsKICAgIH0KICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3Jl YXRlKEFqYXguUmVxdWVzdCwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMuY29udGFpbmVy ID0gewogICAgICBzdWNjZXNzOiAoY29udGFpbmVyLnN1Y2Nlc3MgfHwgY29udGFp bmVyKSwKICAgICAgZmFpbHVyZTogKGNvbnRhaW5lci5mYWlsdXJlIHx8IChjb250 YWluZXIuc3VjY2VzcyA/IG51bGwgOiBjb250YWluZXIpKQogICAgfTsKCiAgICBv cHRpb25zID0gT2JqZWN0LmNsb25lKG9wdGlvbnMpOwogICAgdmFyIG9uQ29tcGxl dGUgPSBvcHRpb25zLm9uQ29tcGxldGU7CiAgICBvcHRpb25zLm9uQ29tcGxldGUg PSAoZnVuY3Rpb24ocmVzcG9uc2UsIGpzb24pIHsKICAgICAgdGhpcy51cGRhdGVD b250ZW50KHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7CiAgICAgIGlmIChPYmplY3Qu aXNGdW5jdGlvbihvbkNvbXBsZXRlKSkgb25Db21wbGV0ZShyZXNwb25zZSwganNv bik7CiAgICB9KS5iaW5kKHRoaXMpOwoKICAgICRzdXBlcih1cmwsIG9wdGlvbnMp OwogIH0sCgogIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc3BvbnNlVGV4dCkg ewogICAgdmFyIHJlY2VpdmVyID0gdGhpcy5jb250YWluZXJbdGhpcy5zdWNjZXNz KCkgPyAnc3VjY2VzcycgOiAnZmFpbHVyZSddLAogICAgICAgIG9wdGlvbnMgPSB0 aGlzLm9wdGlvbnM7CgogICAgaWYgKCFvcHRpb25zLmV2YWxTY3JpcHRzKSByZXNw b25zZVRleHQgPSByZXNwb25zZVRleHQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYg KHJlY2VpdmVyID0gJChyZWNlaXZlcikpIHsKICAgICAgaWYgKG9wdGlvbnMuaW5z ZXJ0aW9uKSB7CiAgICAgICAgaWYgKE9iamVjdC5pc1N0cmluZyhvcHRpb25zLmlu c2VydGlvbikpIHsKICAgICAgICAgIHZhciBpbnNlcnRpb24gPSB7IH07IGluc2Vy dGlvbltvcHRpb25zLmluc2VydGlvbl0gPSByZXNwb25zZVRleHQ7CiAgICAgICAg ICByZWNlaXZlci5pbnNlcnQoaW5zZXJ0aW9uKTsKICAgICAgICB9CiAgICAgICAg ZWxzZSBvcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2VUZXh0KTsK ICAgICAgfQogICAgICBlbHNlIHJlY2VpdmVyLnVwZGF0ZShyZXNwb25zZVRleHQp OwogICAgfQogIH0KfSk7CgpBamF4LlBlcmlvZGljYWxVcGRhdGVyID0gQ2xhc3Mu Y3JlYXRlKEFqYXguQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgICRzdXBlcihvcHRpb25z KTsKICAgIHRoaXMub25Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5vbkNvbXBsZXRl OwoKICAgIHRoaXMuZnJlcXVlbmN5ID0gKHRoaXMub3B0aW9ucy5mcmVxdWVuY3kg fHwgMik7CiAgICB0aGlzLmRlY2F5ID0gKHRoaXMub3B0aW9ucy5kZWNheSB8fCAx KTsKCiAgICB0aGlzLnVwZGF0ZXIgPSB7IH07CiAgICB0aGlzLmNvbnRhaW5lciA9 IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoKICAgIHRoaXMuc3RhcnQo KTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLm9wdGlvbnMu b25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUuYmluZCh0aGlzKTsKICAg IHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7 CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBsZXRlID0gdW5kZWZpbmVk OwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwogICAgKHRoaXMub25Db21w bGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbikuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTogZnVuY3Rpb24ocmVzcG9u c2UpIHsKICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjYXkpIHsKICAgICAgdGhpcy5k ZWNheSA9IChyZXNwb25zZS5yZXNwb25zZVRleHQgPT0gdGhpcy5sYXN0VGV4dCA/ CiAgICAgICAgdGhpcy5kZWNheSAqIHRoaXMub3B0aW9ucy5kZWNheSA6IDEpOwoK ICAgICAgdGhpcy5sYXN0VGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlVGV4dDsKICAg IH0KICAgIHRoaXMudGltZXIgPSB0aGlzLm9uVGltZXJFdmVudC5iaW5kKHRoaXMp LmRlbGF5KHRoaXMuZGVjYXkgKiB0aGlzLmZyZXF1ZW5jeSk7CiAgfSwKCiAgb25U aW1lckV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMudXBkYXRlciA9IG5ldyBB amF4LlVwZGF0ZXIodGhpcy5jb250YWluZXIsIHRoaXMudXJsLCB0aGlzLm9wdGlv bnMpOwogIH0KfSk7CmZ1bmN0aW9uICQoZWxlbWVudCkgewogIGlmIChhcmd1bWVu dHMubGVuZ3RoID4gMSkgewogICAgZm9yICh2YXIgaSA9IDAsIGVsZW1lbnRzID0g W10sIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykK ICAgICAgZWxlbWVudHMucHVzaCgkKGFyZ3VtZW50c1tpXSkpOwogICAgcmV0dXJu IGVsZW1lbnRzOwogIH0KICBpZiAoT2JqZWN0LmlzU3RyaW5nKGVsZW1lbnQpKQog ICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwog IHJldHVybiBFbGVtZW50LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlw ZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVu dHNCeVhQYXRoID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkg ewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50 LmV2YWx1YXRlKGV4cHJlc3Npb24sICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1l bnQsCiAgICAgIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hP VF9UWVBFLCBudWxsKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVy eS5zbmFwc2hvdExlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRz LnB1c2goRWxlbWVudC5leHRlbmQocXVlcnkuc25hcHNob3RJdGVtKGkpKSk7CiAg ICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KCmlmICghd2luZG93Lk5vZGUpIHZhciBOb2RlID0geyB9OwoKaWYg KCFOb2RlLkVMRU1FTlRfTk9ERSkgewogIC8vIERPTSBsZXZlbCAyIEVDTUFTY3Jp cHQgTGFuZ3VhZ2UgQmluZGluZwogIE9iamVjdC5leHRlbmQoTm9kZSwgewogICAg RUxFTUVOVF9OT0RFOiAxLAogICAgQVRUUklCVVRFX05PREU6IDIsCiAgICBURVhU X05PREU6IDMsCiAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICBFTlRJVFlf UkVGRVJFTkNFX05PREU6IDUsCiAgICBFTlRJVFlfTk9ERTogNiwKICAgIFBST0NF U1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgIENPTU1FTlRfTk9ERTogOCwK ICAgIERPQ1VNRU5UX05PREU6IDksCiAgICBET0NVTUVOVF9UWVBFX05PREU6IDEw LAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEsCiAgICBOT1RBVElPTl9O T0RFOiAxMgogIH0pOwp9CgooZnVuY3Rpb24oKSB7CiAgdmFyIGVsZW1lbnQgPSB0 aGlzLkVsZW1lbnQ7CiAgdGhpcy5FbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwg YXR0cmlidXRlcykgewogICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgeyB9 OwogICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIHZhciBj YWNoZSA9IEVsZW1lbnQuY2FjaGU7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIu SUUgJiYgYXR0cmlidXRlcy5uYW1lKSB7CiAgICAgIHRhZ05hbWUgPSAnPCcgKyB0 YWdOYW1lICsgJyBuYW1lPSInICsgYXR0cmlidXRlcy5uYW1lICsgJyI+JzsKICAg ICAgZGVsZXRlIGF0dHJpYnV0ZXMubmFtZTsKICAgICAgcmV0dXJuIEVsZW1lbnQu d3JpdGVBdHRyaWJ1dGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKSwg YXR0cmlidXRlcyk7CiAgICB9CiAgICBpZiAoIWNhY2hlW3RhZ05hbWVdKSBjYWNo ZVt0YWdOYW1lXSA9IEVsZW1lbnQuZXh0ZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQodGFnTmFtZSkpOwogICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUo Y2FjaGVbdGFnTmFtZV0uY2xvbmVOb2RlKGZhbHNlKSwgYXR0cmlidXRlcyk7CiAg fTsKICBPYmplY3QuZXh0ZW5kKHRoaXMuRWxlbWVudCwgZWxlbWVudCB8fCB7IH0p OwogIGlmIChlbGVtZW50KSB0aGlzLkVsZW1lbnQucHJvdG90eXBlID0gZWxlbWVu dC5wcm90b3R5cGU7Cn0pLmNhbGwod2luZG93KTsKCkVsZW1lbnQuY2FjaGUgPSB7 IH07CgpFbGVtZW50Lk1ldGhvZHMgPSB7CiAgdmlzaWJsZTogZnVuY3Rpb24oZWxl bWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc3R5bGUuZGlzcGxheSAhPSAn bm9uZSc7CiAgfSwKCiAgdG9nZ2xlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl bGVtZW50ID0gJChlbGVtZW50KTsKICAgIEVsZW1lbnRbRWxlbWVudC52aXNpYmxl KGVsZW1lbnQpID8gJ2hpZGUnIDogJ3Nob3cnXShlbGVtZW50KTsKICAgIHJldHVy biBlbGVtZW50OwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAg IGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5 ID0gJ25vbmUnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2hvdzogZnVu Y3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBl bGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo ZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB1cGRhdGU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1l bnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRl bnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgaWYgKE9iamVjdC5pc0VsZW1l bnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVwZGF0ZSgpLmluc2VydChjb250 ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAg ZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwogICAg Y29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICBy ZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNlOiBmdW5jdGlvbihlbGVtZW50 LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChj b250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50 b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmplY3QuaXNFbGVtZW50KGNvbnRl bnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwog ICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlUmFu Z2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKICAgICAgY29u dGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICAgIGNv bnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29udGVudC5z dHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVw bGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgcmV0dXJuIGVsZW1lbnQ7 CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCBpbnNlcnRpb25zKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoT2JqZWN0LmlzU3Ry aW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051bWJlcihpbnNlcnRpb25zKSB8 fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5zZXJ0aW9ucykgfHwgKGluc2Vy dGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50IHx8IGluc2VydGlvbnMudG9I VE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0ge2JvdHRvbTppbnNlcnRpb25z fTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0YWdOYW1lLCBjaGlsZE5vZGVz OwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGluc2VydGlvbnMpIHsKICAgICAg Y29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9uXTsKICAgICAgcG9zaXRpb24g PSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAgICBpbnNlcnQgPSBFbGVtZW50 Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRpb25dOwoKICAgICAgaWYgKGNv bnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRv RWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkg ewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250ZW50KTsKICAgICAgICBjb250 aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29u dGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3NpdGlvbiA9PSAnYmVmb3JlJyB8 fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAgID8gZWxlbWVudC5wYXJlbnRO b2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgICAgY2hp bGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVu dCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKCiAgICAgIGlmIChw b3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKSBjaGlsZE5v ZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rlcy5lYWNoKGluc2VydC5jdXJy eShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2YWxTY3JpcHRzLmJpbmQoY29u dGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFwcGVyLCBhdHRyaWJ1dGVzKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChPYmplY3QuaXNFbGVt ZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIpLndyaXRlQXR0cmlidXRlKGF0 dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYgKE9iamVjdC5pc1N0cmluZyh3 cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50KHdyYXBwZXIsIGF0dHJpYnV0 ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVsZW1lbnQoJ2RpdicsIHdyYXBw ZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgZWxlbWVudC5w YXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBlbGVtZW50KTsKICAgIHdy YXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gd3JhcHBlcjsK ICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50 ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQgPSAnPCcgKyBlbGVtZW50LnRh Z05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsnaWQnOiAnaWQnLCAnY2xhc3NO YW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24ocGFpcikgewogICAgICB2YXIg cHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJpYnV0ZSA9IHBhaXIubGFzdCgp OwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtwcm9wZXJ0eV0gfHwgJycpLnRv U3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVzdWx0ICs9ICcgJyArIGF0dHJp YnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1ZSk7CiAgICB9KTsKICAgIHJl dHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVjdXJzaXZlbHlDb2xsZWN0OiBm dW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsKICAgIHdoaWxlIChlbGVtZW50 ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBl ID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVuZChlbGVt ZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAgfSwKCiAgYW5jZXN0b3JzOiBm dW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNp dmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9LAoKICBkZXNjZW5kYW50czog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc2VsZWN0 KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50OiBmdW5jdGlvbihlbGVtZW50 KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkOwogICAgd2hp bGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0g ZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVybiAkKGVsZW1lbnQpOwogIH0s CgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAg ICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkKSkgcmV0dXJu IFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAx KSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIGlmIChlbGVtZW50 KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVsZW1lbnQpLm5leHRTaWJsaW5n cygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBwcmV2aW91c1NpYmxpbmdzOiBm dW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNp dmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycpOwogIH0sCgogIG5leHRTaWJs aW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCku cmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGluZycpOwogIH0sCgogIHNpYmxp bmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50 KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3VzU2libGluZ3MoKS5yZXZlcnNl KCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdzKCkpOwogIH0sCgogIG1hdGNo OiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgaWYgKE9iamVjdC5p c1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9y KHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rvci5tYXRjaCgkKGVsZW1lbnQp KTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5k ZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50 cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVudC5wYXJlbnROb2RlKTsKICAg IHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2VzdG9ycygpOwogICAgcmV0dXJu IE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGFuY2VzdG9yc1tleHByZXNz aW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KGFuY2VzdG9ycywgZXhw cmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246IGZ1bmN0aW9uKGVsZW1lbnQs IGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsK ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiBlbGVtZW50LmZp cnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHBy ZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMoKVtleHByZXNzaW9uXSA6CiAg ICAgIEVsZW1lbnQuc2VsZWN0KGVsZW1lbnQsIGV4cHJlc3Npb24pW2luZGV4IHx8 IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNz aW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAo YXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVy cy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAgIHZhciBwcmV2 aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdzKCk7CiAgICBy ZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJldmlvdXNTaWJs aW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KHBy ZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9LAoKICBuZXh0 OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAx KSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNpYmxpbmco ZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1lbnQubmV4dFNp YmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24p ID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2VsZWN0b3IuZmlu ZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRleCk7CiAgfSwK CiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1l bnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJldHVybiBTZWxl Y3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsKICB9LAoKICBh ZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50 cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1cm4gU2VsZWN0 b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2RlLCBhcmdzKS53 aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5jdGlvbihlbGVt ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBpZCA9IGVs ZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3VtZW50cy5jYWxs ZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQgPSAnYW5vbnlt b3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUgKCQoaWQpKTsK ICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAgcmV0dXJu IGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5h bWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKFByb3RvdHlw ZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5fYXR0cmlidXRl VHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tuYW1lXSkgcmV0 dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAgICBpZiAodC5u YW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAgIGlmIChuYW1l LmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1lbnQuYXR0cmli dXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51bGwgOgogICAg ICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAgICAgIH0KICAg IH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICB9LAoK ICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0dHJpYnV0ZXMg PSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGU7 CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRyaWJ1dGVzID0g bmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVjdC5pc1VuZGVm aW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2YXIgYXR0ciBp biBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0dHJdIHx8IGF0 dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAgICAgaWYgKHQu dmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxlbWVudCwgdmFs dWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxs KQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogICAgICBl bHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50LnNldEF0dHJp YnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0 ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVs ZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAgZ2V0V2lkdGg6 IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERp bWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBmdW5jdGlvbihl bGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NOYW1lcyhlbGVt ZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNs YXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1 cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1l OwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDAgJiYgKGVs ZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5ldyBSZWdFeHAo IihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0KGVsZW1lbnRD bGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVt ZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQp KSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05h bWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVudC5jbGFzc05h bWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4gZWxlbWVudDsK ICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNz TmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47 CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxh Y2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFtZSArICIo XFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFt ZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAg ICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUp ID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NOYW1lJ10oY2xh c3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Utb25seSB0ZXh0 IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0aW9uKGVsZW1l bnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG5vZGUgPSBl bGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewogICAgICB2YXIg bmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAobm9kZS5ub2Rl VHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUpKQogICAgICAg IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUgPSBuZXh0Tm9k ZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVtcHR5OiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5pbm5lckhUTUwu YmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9uKGVsZW1lbnQs IGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwgYW5jZXN0b3Ig PSAkKGFuY2VzdG9yKTsKCiAgICBpZiAoZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQ b3NpdGlvbikKICAgICAgcmV0dXJuIChlbGVtZW50LmNvbXBhcmVEb2N1bWVudFBv c2l0aW9uKGFuY2VzdG9yKSAmIDgpID09PSA4OwoKICAgIGlmIChhbmNlc3Rvci5j b250YWlucykKICAgICAgcmV0dXJuIGFuY2VzdG9yLmNvbnRhaW5zKGVsZW1lbnQp ICYmIGFuY2VzdG9yICE9PSBlbGVtZW50OwoKICAgIHdoaWxlIChlbGVtZW50ID0g ZWxlbWVudC5wYXJlbnROb2RlKQogICAgICBpZiAoZWxlbWVudCA9PSBhbmNlc3Rv cikgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHNjcm9s bFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50 KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoKTsKICAg IHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7CiAgICByZXR1cm4gZWxl bWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSBzdHlsZSA9 PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2 YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUg fHwgdmFsdWUgPT0gJ2F1dG8nKSB7CiAgICAgIHZhciBjc3MgPSBkb2N1bWVudC5k ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpOwogICAg ICB2YWx1ZSA9IGNzcyA/IGNzc1tzdHlsZV0gOiBudWxsOwogICAgfQogICAgaWYg KHN0eWxlID09ICdvcGFjaXR5JykgcmV0dXJuIHZhbHVlID8gcGFyc2VGbG9hdCh2 YWx1ZSkgOiAxLjA7CiAgICByZXR1cm4gdmFsdWUgPT0gJ2F1dG8nID8gbnVsbCA6 IHZhbHVlOwogIH0sCgogIGdldE9wYWNpdHk6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK ICAgIHJldHVybiAkKGVsZW1lbnQpLmdldFN0eWxlKCdvcGFjaXR5Jyk7CiAgfSwK CiAgc2V0U3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHN0eWxlcykgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudFN0eWxlID0gZWxlbWVu dC5zdHlsZSwgbWF0Y2g7CiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKHN0eWxlcykp IHsKICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ICs9ICc7JyArIHN0eWxlczsK ICAgICAgcmV0dXJuIHN0eWxlcy5pbmNsdWRlKCdvcGFjaXR5JykgPwogICAgICAg IGVsZW1lbnQuc2V0T3BhY2l0eShzdHlsZXMubWF0Y2goL29wYWNpdHk6XHMqKFxk P1wuP1xkKikvKVsxXSkgOiBlbGVtZW50OwogICAgfQogICAgZm9yICh2YXIgcHJv cGVydHkgaW4gc3R5bGVzKQogICAgICBpZiAocHJvcGVydHkgPT0gJ29wYWNpdHkn KSBlbGVtZW50LnNldE9wYWNpdHkoc3R5bGVzW3Byb3BlcnR5XSk7CiAgICAgIGVs c2UKICAgICAgICBlbGVtZW50U3R5bGVbKHByb3BlcnR5ID09ICdmbG9hdCcgfHwg cHJvcGVydHkgPT0gJ2Nzc0Zsb2F0JykgPwogICAgICAgICAgKE9iamVjdC5pc1Vu ZGVmaW5lZChlbGVtZW50U3R5bGUuc3R5bGVGbG9hdCkgPyAnY3NzRmxvYXQnIDog J3N0eWxlRmxvYXQnKSA6CiAgICAgICAgICAgIHByb3BlcnR5XSA9IHN0eWxlc1tw cm9wZXJ0eV07CgogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2V0T3BhY2l0 eTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVs ZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVlID09IDEg fHwgdmFsdWUgPT09ICcnKSA/ICcnIDoKICAgICAgKHZhbHVlIDwgMC4wMDAwMSkg PyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXREaW1l bnNpb25zOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVt ZW50KTsKICAgIHZhciBkaXNwbGF5ID0gZWxlbWVudC5nZXRTdHlsZSgnZGlzcGxh eScpOwogICAgaWYgKGRpc3BsYXkgIT0gJ25vbmUnICYmIGRpc3BsYXkgIT0gbnVs bCkgLy8gU2FmYXJpIGJ1ZwogICAgICByZXR1cm4ge3dpZHRoOiBlbGVtZW50Lm9m ZnNldFdpZHRoLCBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0fTsKCiAgICAv LyBBbGwgKldpZHRoIGFuZCAqSGVpZ2h0IHByb3BlcnRpZXMgZ2l2ZSAwIG9uIGVs ZW1lbnRzIHdpdGggZGlzcGxheSBub25lLAogICAgLy8gc28gZW5hYmxlIHRoZSBl bGVtZW50IHRlbXBvcmFyaWx5CiAgICB2YXIgZWxzID0gZWxlbWVudC5zdHlsZTsK ICAgIHZhciBvcmlnaW5hbFZpc2liaWxpdHkgPSBlbHMudmlzaWJpbGl0eTsKICAg IHZhciBvcmlnaW5hbFBvc2l0aW9uID0gZWxzLnBvc2l0aW9uOwogICAgdmFyIG9y aWdpbmFsRGlzcGxheSA9IGVscy5kaXNwbGF5OwogICAgZWxzLnZpc2liaWxpdHkg PSAnaGlkZGVuJzsKICAgIGVscy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBl bHMuZGlzcGxheSA9ICdibG9jayc7CiAgICB2YXIgb3JpZ2luYWxXaWR0aCA9IGVs ZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIgb3JpZ2luYWxIZWlnaHQgPSBlbGVt ZW50LmNsaWVudEhlaWdodDsKICAgIGVscy5kaXNwbGF5ID0gb3JpZ2luYWxEaXNw bGF5OwogICAgZWxzLnBvc2l0aW9uID0gb3JpZ2luYWxQb3NpdGlvbjsKICAgIGVs cy52aXNpYmlsaXR5ID0gb3JpZ2luYWxWaXNpYmlsaXR5OwogICAgcmV0dXJuIHt3 aWR0aDogb3JpZ2luYWxXaWR0aCwgaGVpZ2h0OiBvcmlnaW5hbEhlaWdodH07CiAg fSwKCiAgbWFrZVBvc2l0aW9uZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVs ZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIHBvcyA9IEVsZW1lbnQuZ2V0U3R5 bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7CiAgICBpZiAocG9zID09ICdzdGF0aWMn IHx8ICFwb3MpIHsKICAgICAgZWxlbWVudC5fbWFkZVBvc2l0aW9uZWQgPSB0cnVl OwogICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKICAg ICAgLy8gT3BlcmEgcmV0dXJucyB0aGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBw b3NpdGlvbmluZyBjb250ZXh0LCB3aGVuIGFuCiAgICAgIC8vIGVsZW1lbnQgaXMg cG9zaXRpb24gcmVsYXRpdmUgYnV0IHRvcCBhbmQgbGVmdCBoYXZlIG5vdCBiZWVu IGRlZmluZWQKICAgICAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAg ICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1lbnQuc3R5 bGUubGVmdCA9IDA7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIHVuZG9Qb3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl bGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRlUG9zaXRp b25lZCkgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVuZGVmaW5l ZDsKICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAgZWxlbWVu dC5zdHlsZS50b3AgPQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9CiAgICAg ICAgZWxlbWVudC5zdHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQuc3R5bGUu cmlnaHQgPSAnJzsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIG1h a2VDbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQo ZWxlbWVudCk7CiAgICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVt ZW50OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0eWxlKGVs ZW1lbnQsICdvdmVyZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVtZW50Ll9v dmVyZmxvdyAhPT0gJ2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZs b3cgPSAnaGlkZGVuJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9D bGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICBpZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4gZWxlbWVu dDsKICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9vdmVyZmxv dyA9PSAnYXV0bycgPyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAgZWxlbWVu dC5fb3ZlcmZsb3cgPSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAg Y3VtdWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZh bHVlVCA9IDAsIHZhbHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVlVCArPSBl bGVtZW50Lm9mZnNldFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVsZW1lbnQu b2Zmc2V0TGVmdCB8fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ YXJlbnQ7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50 Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBvc2l0aW9u ZWRPZmZzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAw LCB2YWx1ZUwgPSAwOwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5v ZmZzZXRUb3AgIHx8IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExl ZnQgfHwgMDsKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owog ICAgICBpZiAoZWxlbWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWUu dG9VcHBlckNhc2UoKSA9PSAnQk9EWScpIGJyZWFrOwogICAgICAgIHZhciBwID0g RWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAgICAgICBp ZiAocCAhPT0gJ3N0YXRpYycpIGJyZWFrOwogICAgICB9CiAgICB9IHdoaWxlIChl bGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVM LCB2YWx1ZVQpOwogIH0sCgogIGFic29sdXRpemU6IGZ1bmN0aW9uKGVsZW1lbnQp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGVsZW1lbnQuZ2V0 U3R5bGUoJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgcmV0dXJuIGVsZW1lbnQ7 CiAgICAvLyBQb3NpdGlvbi5wcmVwYXJlKCk7IC8vIFRvIGJlIGRvbmUgbWFudWFs bHkgYnkgU2NyaXB0eSB3aGVuIGl0IG5lZWRzIGl0LgoKICAgIHZhciBvZmZzZXRz ID0gZWxlbWVudC5wb3NpdGlvbmVkT2Zmc2V0KCk7CiAgICB2YXIgdG9wICAgICA9 IG9mZnNldHNbMV07CiAgICB2YXIgbGVmdCAgICA9IG9mZnNldHNbMF07CiAgICB2 YXIgd2lkdGggICA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIgaGVpZ2h0 ICA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwoKICAgIGVsZW1lbnQuX29yaWdpbmFs TGVmdCAgID0gbGVmdCAtIHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS5sZWZ0ICB8 fCAwKTsKICAgIGVsZW1lbnQuX29yaWdpbmFsVG9wICAgID0gdG9wICAtIHBhcnNl RmxvYXQoZWxlbWVudC5zdHlsZS50b3AgfHwgMCk7CiAgICBlbGVtZW50Ll9vcmln aW5hbFdpZHRoICA9IGVsZW1lbnQuc3R5bGUud2lkdGg7CiAgICBlbGVtZW50Ll9v cmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0OwoKICAgIGVsZW1l bnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgZWxlbWVudC5zdHls ZS50b3AgICAgPSB0b3AgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAg PSBsZWZ0ICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUud2lkdGggID0gd2lkdGgg KyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgn OwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcmVsYXRpdml6ZTogZnVuY3Rp b24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAo ZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKSA9PSAncmVsYXRpdmUnKSByZXR1 cm4gZWxlbWVudDsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUg ZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAg ZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2YXIgdG9w ICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0gKGVsZW1l bnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJzZUZsb2F0 KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmlnaW5hbExl ZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3AgKyAncHgn OwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsKICAgIGVs ZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWlnaHQ7CiAg ICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFsV2lkdGg7 CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Nyb2xsT2Zm c2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFs dWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQuc2Nyb2xs VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxMZWZ0IHx8 IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAgICB9IHdo aWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQo dmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDogZnVuY3Rp b24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSByZXR1 cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVudCA9PSBk b2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGlsZSAoKGVs ZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0gZG9jdW1l bnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bv c2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxlbWVudCk7 CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmlld3BvcnRP ZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAw LCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVudDsKICAg IGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwog ICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CgogICAgICAv LyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBk b2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShlbGVtZW50 LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9IHdoaWxl IChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVsZW1lbnQg PSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93 c2VyLk9wZXJhIHx8IChlbGVtZW50LnRhZ05hbWUgJiYgKGVsZW1lbnQudGFnTmFt ZS50b1VwcGVyQ2FzZSgpID09ICdCT0RZJykpKSB7CiAgICAgICAgdmFsdWVUIC09 IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICAgIHZhbHVlTCAtPSBlbGVt ZW50LnNjcm9sbExlZnQgfHwgMDsKICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVu dCA9IGVsZW1lbnQucGFyZW50Tm9kZSk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3Jl dHVybk9mZnNldCh2YWx1ZUwsIHZhbHVlVCk7CiAgfSwKCiAgY2xvbmVQb3NpdGlv bjogZnVuY3Rpb24oZWxlbWVudCwgc291cmNlKSB7CiAgICB2YXIgb3B0aW9ucyA9 IE9iamVjdC5leHRlbmQoewogICAgICBzZXRMZWZ0OiAgICB0cnVlLAogICAgICBz ZXRUb3A6ICAgICB0cnVlLAogICAgICBzZXRXaWR0aDogICB0cnVlLAogICAgICBz ZXRIZWlnaHQ6ICB0cnVlLAogICAgICBvZmZzZXRUb3A6ICAwLAogICAgICBvZmZz ZXRMZWZ0OiAwCiAgICB9LCBhcmd1bWVudHNbMl0gfHwgeyB9KTsKCiAgICAvLyBm aW5kIHBhZ2UgcG9zaXRpb24gb2Ygc291cmNlCiAgICBzb3VyY2UgPSAkKHNvdXJj ZSk7CiAgICB2YXIgcCA9IHNvdXJjZS52aWV3cG9ydE9mZnNldCgpOwoKICAgIC8v IGZpbmQgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdXNlCiAgICBlbGVtZW50ID0gJChl bGVtZW50KTsKICAgIHZhciBkZWx0YSA9IFswLCAwXTsKICAgIHZhciBwYXJlbnQg PSBudWxsOwogICAgLy8gZGVsdGEgWzAsMF0gd2lsbCBkbyBmaW5lIHdpdGggcG9z aXRpb246IGZpeGVkIGVsZW1lbnRzLAogICAgLy8gcG9zaXRpb246YWJzb2x1dGUg bmVlZHMgb2Zmc2V0UGFyZW50IGRlbHRhcwogICAgaWYgKEVsZW1lbnQuZ2V0U3R5 bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgewogICAgICBw YXJlbnQgPSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICBkZWx0YSA9 IHBhcmVudC52aWV3cG9ydE9mZnNldCgpOwogICAgfQoKICAgIC8vIGNvcnJlY3Qg YnkgYm9keSBvZmZzZXRzIChmaXhlcyBTYWZhcmkpCiAgICBpZiAocGFyZW50ID09 IGRvY3VtZW50LmJvZHkpIHsKICAgICAgZGVsdGFbMF0gLT0gZG9jdW1lbnQuYm9k eS5vZmZzZXRMZWZ0OwogICAgICBkZWx0YVsxXSAtPSBkb2N1bWVudC5ib2R5Lm9m ZnNldFRvcDsKICAgIH0KCiAgICAvLyBzZXQgcG9zaXRpb24KICAgIGlmIChvcHRp b25zLnNldExlZnQpICAgZWxlbWVudC5zdHlsZS5sZWZ0ICA9IChwWzBdIC0gZGVs dGFbMF0gKyBvcHRpb25zLm9mZnNldExlZnQpICsgJ3B4JzsKICAgIGlmIChvcHRp b25zLnNldFRvcCkgICAgZWxlbWVudC5zdHlsZS50b3AgICA9IChwWzFdIC0gZGVs dGFbMV0gKyBvcHRpb25zLm9mZnNldFRvcCkgKyAncHgnOwogICAgaWYgKG9wdGlv bnMuc2V0V2lkdGgpICBlbGVtZW50LnN0eWxlLndpZHRoID0gc291cmNlLm9mZnNl dFdpZHRoICsgJ3B4JzsKICAgIGlmIChvcHRpb25zLnNldEhlaWdodCkgZWxlbWVu dC5zdHlsZS5oZWlnaHQgPSBzb3VyY2Uub2Zmc2V0SGVpZ2h0ICsgJ3B4JzsKICAg IHJldHVybiBlbGVtZW50OwogIH0KfTsKCkVsZW1lbnQuTWV0aG9kcy5pZGVudGlm eS5jb3VudGVyID0gMTsKCk9iamVjdC5leHRlbmQoRWxlbWVudC5NZXRob2RzLCB7 CiAgZ2V0RWxlbWVudHNCeVNlbGVjdG9yOiBFbGVtZW50Lk1ldGhvZHMuc2VsZWN0 LAogIGNoaWxkRWxlbWVudHM6IEVsZW1lbnQuTWV0aG9kcy5pbW1lZGlhdGVEZXNj ZW5kYW50cwp9KTsKCkVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucyA9IHsK ICB3cml0ZTogewogICAgbmFtZXM6IHsKICAgICAgY2xhc3NOYW1lOiAnY2xhc3Mn LAogICAgICBodG1sRm9yOiAgICdmb3InCiAgICB9LAogICAgdmFsdWVzOiB7IH0K ICB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICBFbGVtZW50 Lk1ldGhvZHMuZ2V0U3R5bGUgPSBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUud3Jh cCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIHN0eWxlKSB7CiAgICAg IHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICBjYXNlICdsZWZ0JzogY2FzZSAndG9w JzogY2FzZSAncmlnaHQnOiBjYXNlICdib3R0b20nOgogICAgICAgICAgaWYgKHBy b2NlZWQoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSByZXR1cm4g bnVsbDsKICAgICAgICBjYXNlICdoZWlnaHQnOiBjYXNlICd3aWR0aCc6CiAgICAg ICAgICAvLyByZXR1cm5zICcwcHgnIGZvciBoaWRkZW4gZWxlbWVudHM7IHdlIHdh bnQgaXQgdG8gcmV0dXJuIG51bGwKICAgICAgICAgIGlmICghRWxlbWVudC52aXNp YmxlKGVsZW1lbnQpKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICAvLyByZXR1cm5z IHRoZSBib3JkZXItYm94IGRpbWVuc2lvbnMgcmF0aGVyIHRoYW4gdGhlIGNvbnRl bnQtYm94CiAgICAgICAgICAvLyBkaW1lbnNpb25zLCBzbyB3ZSBzdWJ0cmFjdCBw YWRkaW5nIGFuZCBib3JkZXJzIGZyb20gdGhlIHZhbHVlCiAgICAgICAgICB2YXIg ZGltID0gcGFyc2VJbnQocHJvY2VlZChlbGVtZW50LCBzdHlsZSksIDEwKTsKCiAg ICAgICAgICBpZiAoZGltICE9PSBlbGVtZW50WydvZmZzZXQnICsgc3R5bGUuY2Fw aXRhbGl6ZSgpXSkKICAgICAgICAgICAgcmV0dXJuIGRpbSArICdweCc7CgogICAg ICAgICAgdmFyIHByb3BlcnRpZXM7CiAgICAgICAgICBpZiAoc3R5bGUgPT09ICdo ZWlnaHQnKSB7CiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbJ2JvcmRlci10b3At d2lkdGgnLCAncGFkZGluZy10b3AnLAogICAgICAgICAgICAgJ3BhZGRpbmctYm90 dG9tJywgJ2JvcmRlci1ib3R0b20td2lkdGgnXTsKICAgICAgICAgIH0KICAgICAg ICAgIGVsc2UgewogICAgICAgICAgICBwcm9wZXJ0aWVzID0gWydib3JkZXItbGVm dC13aWR0aCcsICdwYWRkaW5nLWxlZnQnLAogICAgICAgICAgICAgJ3BhZGRpbmct cmlnaHQnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJ107CiAgICAgICAgICB9CiAgICAg ICAgICByZXR1cm4gcHJvcGVydGllcy5pbmplY3QoZGltLCBmdW5jdGlvbihtZW1v LCBwcm9wZXJ0eSkgewogICAgICAgICAgICB2YXIgdmFsID0gcHJvY2VlZChlbGVt ZW50LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwg PyBtZW1vIDogbWVtbyAtIHBhcnNlSW50KHZhbCwgMTApOwogICAgICAgICAgfSkg KyAncHgnOwogICAgICAgIGRlZmF1bHQ6IHJldHVybiBwcm9jZWVkKGVsZW1lbnQs IHN0eWxlKTsKICAgICAgfQogICAgfQogICk7CgogIEVsZW1lbnQuTWV0aG9kcy5y ZWFkQXR0cmlidXRlID0gRWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1dGUud3Jh cCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIGF0dHJpYnV0ZSkgewog ICAgICBpZiAoYXR0cmlidXRlID09PSAndGl0bGUnKSByZXR1cm4gZWxlbWVudC50 aXRsZTsKICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCwgYXR0cmlidXRlKTsK ICAgIH0KICApOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSkgewog IC8vIElFIGRvZXNuJ3QgcmVwb3J0IG9mZnNldHMgY29ycmVjdGx5IGZvciBzdGF0 aWMgZWxlbWVudHMsIHNvIHdlIGNoYW5nZSB0aGVtCiAgLy8gdG8gInJlbGF0aXZl IiB0byBnZXQgdGhlIHZhbHVlcywgdGhlbiBjaGFuZ2UgdGhlbSBiYWNrLgogIEVs ZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQgPSBFbGVtZW50Lk1ldGhvZHMu Z2V0T2Zmc2V0UGFyZW50LndyYXAoCiAgICBmdW5jdGlvbihwcm9jZWVkLCBlbGVt ZW50KSB7CiAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgICAvLyBJRSB0 aHJvd3MgYW4gZXJyb3IgaWYgZWxlbWVudCBpcyBub3QgaW4gZG9jdW1lbnQKICAg ICAgdHJ5IHsgZWxlbWVudC5vZmZzZXRQYXJlbnQgfQogICAgICBjYXRjaChlKSB7 IHJldHVybiAkKGRvY3VtZW50LmJvZHkpIH0KICAgICAgdmFyIHBvc2l0aW9uID0g ZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKTsKICAgICAgaWYgKHBvc2l0aW9u ICE9PSAnc3RhdGljJykgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAgICAgIGVs ZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsKICAgICAg dmFyIHZhbHVlID0gcHJvY2VlZChlbGVtZW50KTsKICAgICAgZWxlbWVudC5zZXRT dHlsZSh7IHBvc2l0aW9uOiBwb3NpdGlvbiB9KTsKICAgICAgcmV0dXJuIHZhbHVl OwogICAgfQogICk7CgogICR3KCdwb3NpdGlvbmVkT2Zmc2V0IHZpZXdwb3J0T2Zm c2V0JykuZWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgIEVsZW1lbnQuTWV0aG9k c1ttZXRob2RdID0gRWxlbWVudC5NZXRob2RzW21ldGhvZF0ud3JhcCgKICAgICAg ZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCkgewogICAgICAgIGVsZW1lbnQgPSAk KGVsZW1lbnQpOwogICAgICAgIHRyeSB7IGVsZW1lbnQub2Zmc2V0UGFyZW50IH0K ICAgICAgICBjYXRjaChlKSB7IHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQo MCwwKSB9CiAgICAgICAgdmFyIHBvc2l0aW9uID0gZWxlbWVudC5nZXRTdHlsZSgn cG9zaXRpb24nKTsKICAgICAgICBpZiAocG9zaXRpb24gIT09ICdzdGF0aWMnKSBy ZXR1cm4gcHJvY2VlZChlbGVtZW50KTsKICAgICAgICAvLyBUcmlnZ2VyIGhhc0xh eW91dCBvbiB0aGUgb2Zmc2V0IHBhcmVudCBzbyB0aGF0IElFNiByZXBvcnRzCiAg ICAgICAgLy8gYWNjdXJhdGUgb2Zmc2V0VG9wIGFuZCBvZmZzZXRMZWZ0IHZhbHVl cyBmb3IgcG9zaXRpb246IGZpeGVkLgogICAgICAgIHZhciBvZmZzZXRQYXJlbnQg PSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICAgIGlmIChvZmZzZXRQ YXJlbnQgJiYgb2Zmc2V0UGFyZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09PSAn Zml4ZWQnKQogICAgICAgICAgb2Zmc2V0UGFyZW50LnNldFN0eWxlKHsgem9vbTog MSB9KTsKICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246ICdyZWxh dGl2ZScgfSk7CiAgICAgICAgdmFyIHZhbHVlID0gcHJvY2VlZChlbGVtZW50KTsK ICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246IHBvc2l0aW9uIH0p OwogICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgKTsKICB9KTsKCiAg RWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQgPSBFbGVtZW50Lk1ldGhv ZHMuY3VtdWxhdGl2ZU9mZnNldC53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwg ZWxlbWVudCkgewogICAgICB0cnkgeyBlbGVtZW50Lm9mZnNldFBhcmVudCB9CiAg ICAgIGNhdGNoKGUpIHsgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCgwLDAp IH0KICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAgICB9CiAgKTsKCiAg RWxlbWVudC5NZXRob2RzLmdldFN0eWxlID0gZnVuY3Rpb24oZWxlbWVudCwgc3R5 bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSAoc3R5 bGUgPT0gJ2Zsb2F0JyB8fCBzdHlsZSA9PSAnY3NzRmxvYXQnKSA/ICdzdHlsZUZs b2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50 LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUgJiYgZWxlbWVudC5jdXJyZW50 U3R5bGUpIHZhbHVlID0gZWxlbWVudC5jdXJyZW50U3R5bGVbc3R5bGVdOwoKICAg IGlmIChzdHlsZSA9PSAnb3BhY2l0eScpIHsKICAgICAgaWYgKHZhbHVlID0gKGVs ZW1lbnQuZ2V0U3R5bGUoJ2ZpbHRlcicpIHx8ICcnKS5tYXRjaCgvYWxwaGFcKG9w YWNpdHk9KC4qKVwpLykpCiAgICAgICAgaWYgKHZhbHVlWzFdKSByZXR1cm4gcGFy c2VGbG9hdCh2YWx1ZVsxXSkgLyAxMDA7CiAgICAgIHJldHVybiAxLjA7CiAgICB9 CgogICAgaWYgKHZhbHVlID09ICdhdXRvJykgewogICAgICBpZiAoKHN0eWxlID09 ICd3aWR0aCcgfHwgc3R5bGUgPT0gJ2hlaWdodCcpICYmIChlbGVtZW50LmdldFN0 eWxlKCdkaXNwbGF5JykgIT0gJ25vbmUnKSkKICAgICAgICByZXR1cm4gZWxlbWVu dFsnb2Zmc2V0JyArIHN0eWxlLmNhcGl0YWxpemUoKV0gKyAncHgnOwogICAgICBy ZXR1cm4gbnVsbDsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKICB9OwoKICBFbGVt ZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVl KSB7CiAgICBmdW5jdGlvbiBzdHJpcEFscGhhKGZpbHRlcil7CiAgICAgIHJldHVy biBmaWx0ZXIucmVwbGFjZSgvYWxwaGFcKFteXCldKlwpL2dpLCcnKTsKICAgIH0K ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGN1cnJlbnRTdHlsZSA9 IGVsZW1lbnQuY3VycmVudFN0eWxlOwogICAgaWYgKChjdXJyZW50U3R5bGUgJiYg IWN1cnJlbnRTdHlsZS5oYXNMYXlvdXQpIHx8CiAgICAgICghY3VycmVudFN0eWxl ICYmIGVsZW1lbnQuc3R5bGUuem9vbSA9PSAnbm9ybWFsJykpCiAgICAgICAgZWxl bWVudC5zdHlsZS56b29tID0gMTsKCiAgICB2YXIgZmlsdGVyID0gZWxlbWVudC5n ZXRTdHlsZSgnZmlsdGVyJyksIHN0eWxlID0gZWxlbWVudC5zdHlsZTsKICAgIGlm ICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgewogICAgICAoZmlsdGVyID0g c3RyaXBBbHBoYShmaWx0ZXIpKSA/CiAgICAgICAgc3R5bGUuZmlsdGVyID0gZmls dGVyIDogc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKICAgICAgcmV0 dXJuIGVsZW1lbnQ7CiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMC4wMDAwMSkgdmFs dWUgPSAwOwogICAgc3R5bGUuZmlsdGVyID0gc3RyaXBBbHBoYShmaWx0ZXIpICsK ICAgICAgJ2FscGhhKG9wYWNpdHk9JyArICh2YWx1ZSAqIDEwMCkgKyAnKSc7CiAg ICByZXR1cm4gZWxlbWVudDsKICB9OwoKICBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFu c2xhdGlvbnMgPSB7CiAgICByZWFkOiB7CiAgICAgIG5hbWVzOiB7CiAgICAgICAg J2NsYXNzJzogJ2NsYXNzTmFtZScsCiAgICAgICAgJ2Zvcic6ICAgJ2h0bWxGb3In CiAgICAgIH0sCiAgICAgIHZhbHVlczogewogICAgICAgIF9nZXRBdHRyOiBmdW5j dGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIHJldHVybiBlbGVt ZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIDIpOwogICAgICAgIH0sCiAgICAg ICAgX2dldEF0dHJOb2RlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsK ICAgICAgICAgIHZhciBub2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKGF0 dHJpYnV0ZSk7CiAgICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUudmFsdWUgOiAi IjsKICAgICAgICB9LAogICAgICAgIF9nZXRFdjogZnVuY3Rpb24oZWxlbWVudCwg YXR0cmlidXRlKSB7CiAgICAgICAgICBhdHRyaWJ1dGUgPSBlbGVtZW50LmdldEF0 dHJpYnV0ZShhdHRyaWJ1dGUpOwogICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZSA/ IGF0dHJpYnV0ZS50b1N0cmluZygpLnNsaWNlKDIzLCAtMikgOiBudWxsOwogICAg ICAgIH0sCiAgICAgICAgX2ZsYWc6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0 ZSkgewogICAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuaGFzQXR0cmlidXRlKGF0 dHJpYnV0ZSkgPyBhdHRyaWJ1dGUgOiBudWxsOwogICAgICAgIH0sCiAgICAgICAg c3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVybiBlbGVt ZW50LnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKTsKICAgICAgICB9LAogICAg ICAgIHRpdGxlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICByZXR1cm4g ZWxlbWVudC50aXRsZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBF bGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGUgPSB7CiAgICBuYW1l czogT2JqZWN0LmV4dGVuZCh7CiAgICAgIGNlbGxwYWRkaW5nOiAnY2VsbFBhZGRp bmcnLAogICAgICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJwogICAgfSwgRWxl bWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQubmFtZXMpLAogICAgdmFs dWVzOiB7CiAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7 CiAgICAgICAgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICAgICAgfSwKCiAg ICAgIHN0eWxlOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgICAgIGVs ZW1lbnQuc3R5bGUuY3NzVGV4dCA9IHZhbHVlID8gdmFsdWUgOiAnJzsKICAgICAg fQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy5o YXMgPSB7fTsKCiAgJHcoJ2NvbFNwYW4gcm93U3BhbiB2QWxpZ24gZGF0ZVRpbWUg YWNjZXNzS2V5IHRhYkluZGV4ICcgKwogICAgICAnZW5jVHlwZSBtYXhMZW5ndGgg cmVhZE9ubHkgbG9uZ0Rlc2MgZnJhbWVCb3JkZXInKS5lYWNoKGZ1bmN0aW9uKGF0 dHIpIHsKICAgIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy53cml0ZS5u YW1lc1thdHRyLnRvTG93ZXJDYXNlKCldID0gYXR0cjsKICAgIEVsZW1lbnQuX2F0 dHJpYnV0ZVRyYW5zbGF0aW9ucy5oYXNbYXR0ci50b0xvd2VyQ2FzZSgpXSA9IGF0 dHI7CiAgfSk7CgogIChmdW5jdGlvbih2KSB7CiAgICBPYmplY3QuZXh0ZW5kKHYs IHsKICAgICAgaHJlZjogICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHNyYzogICAg ICAgICB2Ll9nZXRBdHRyLAogICAgICB0eXBlOiAgICAgICAgdi5fZ2V0QXR0ciwK ICAgICAgYWN0aW9uOiAgICAgIHYuX2dldEF0dHJOb2RlLAogICAgICBkaXNhYmxl ZDogICAgdi5fZmxhZywKICAgICAgY2hlY2tlZDogICAgIHYuX2ZsYWcsCiAgICAg IHJlYWRvbmx5OiAgICB2Ll9mbGFnLAogICAgICBtdWx0aXBsZTogICAgdi5fZmxh ZywKICAgICAgb25sb2FkOiAgICAgIHYuX2dldEV2LAogICAgICBvbnVubG9hZDog ICAgdi5fZ2V0RXYsCiAgICAgIG9uY2xpY2s6ICAgICB2Ll9nZXRFdiwKICAgICAg b25kYmxjbGljazogIHYuX2dldEV2LAogICAgICBvbm1vdXNlZG93bjogdi5fZ2V0 RXYsCiAgICAgIG9ubW91c2V1cDogICB2Ll9nZXRFdiwKICAgICAgb25tb3VzZW92 ZXI6IHYuX2dldEV2LAogICAgICBvbm1vdXNlbW92ZTogdi5fZ2V0RXYsCiAgICAg IG9ubW91c2VvdXQ6ICB2Ll9nZXRFdiwKICAgICAgb25mb2N1czogICAgIHYuX2dl dEV2LAogICAgICBvbmJsdXI6ICAgICAgdi5fZ2V0RXYsCiAgICAgIG9ua2V5cHJl c3M6ICB2Ll9nZXRFdiwKICAgICAgb25rZXlkb3duOiAgIHYuX2dldEV2LAogICAg ICBvbmtleXVwOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uc3VibWl0OiAgICB2Ll9n ZXRFdiwKICAgICAgb25yZXNldDogICAgIHYuX2dldEV2LAogICAgICBvbnNlbGVj dDogICAgdi5fZ2V0RXYsCiAgICAgIG9uY2hhbmdlOiAgICB2Ll9nZXRFdgogICAg fSk7CiAgfSkoRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQudmFs dWVzKTsKfQoKZWxzZSBpZiAoUHJvdG90eXBlLkJyb3dzZXIuR2Vja28gJiYgL3J2 OjFcLjhcLjAvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKICBFbGVtZW50 Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5bGUub3Bh Y2l0eSA9ICh2YWx1ZSA9PSAxKSA/IDAuOTk5OTk5IDoKICAgICAgKHZhbHVlID09 PSAnJykgPyAnJyA6ICh2YWx1ZSA8IDAuMDAwMDEpID8gMCA6IHZhbHVlOwogICAg cmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKZWxzZSBpZiAoUHJvdG90eXBlLkJyb3dz ZXIuV2ViS2l0KSB7CiAgRWxlbWVudC5NZXRob2RzLnNldE9wYWNpdHkgPSBmdW5j dGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7 CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8fCB2YWx1 ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/IDAgOiB2 YWx1ZTsKCiAgICBpZiAodmFsdWUgPT0gMSkKICAgICAgaWYoZWxlbWVudC50YWdO YW1lLnRvVXBwZXJDYXNlKCkgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0aCkgewog ICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwogICAgICB9 IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHRO b2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgICAg ICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChlKSB7IH0K CiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0dXJucyBt YXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBjaGlsZCBp cyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5jZSBy ZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQgZm9yCiAg Ly8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1bXVsYXRp dmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0g MCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQu b2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRM ZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1 bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQs ICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAgZWxlbWVu dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxlbWVudCk7 CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZhbHVl VCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFByb3RvdHlw ZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBtaXNzaW5n IC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQgU0VMRUNU IGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0aW9uKGVs ZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoKICAg IGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29u dGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KGNvbnRl bnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVudCk7Cgog ICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2YXIgdGFn TmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmICh0 YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50YWdzKSB7 CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihub2Rl KSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVsZW1lbnQu X2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50 LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsg ZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVsc2UgZWxl bWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoKICAgIGNv bnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwogICAgcmV0 dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2RzLnJlcGxh Y2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0g JChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRvRWxlbWVu dCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAoT2JqZWN0 LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVudE5vZGUu cmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1cm4gZWxl bWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChjb250ZW50 KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUg PSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChFbGVtZW50 Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewogICAgICB2 YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFyIGZyYWdt ZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0 YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFyZW50LnJl bW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcpCiAgICAg ICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQuaW5zZXJ0 QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQogICAgICAg IGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFwcGVuZENo aWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVySFRNTCA9 IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFsU2NyaXB0 cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0KSB7CiAg dmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAgcmVzdWx0 LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dldENvbnRl bnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGh0bWwp IHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxlbWVudC5f aW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYgKHQpIHsK ICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAgICB0WzJd LnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9KTsKICB9 IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRpdi5jaGls ZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucyA9IHsK ICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQu cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAgfSwKICB0 b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuaW5zZXJ0 QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBib3R0b206 IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBwZW5kQ2hp bGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbm9kZSkg ewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbGVt ZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxFOiAgWyc8 dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAgICAgICAg ICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAgICAgICAg ICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6ICAgICBb Jzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5PjwvdGFibGU+ JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0cj48dGQ+ JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBTRUxFQ1Q6 IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAgICAgICAg ICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVjdC5leHRl bmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZLAogICAg VEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRhZ3MuVEQK ICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMpOwoK RWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1dGU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRlID0gRWxl bWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVdIHx8IGF0 dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRyaWJ1dGVO b2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gISEobm9kZSAmJiBub2RlLnNwZWNp ZmllZCk7CiAgfQp9OwoKRWxlbWVudC5NZXRob2RzLkJ5VGFnID0geyB9OwoKT2Jq ZWN0LmV4dGVuZChFbGVtZW50LCBFbGVtZW50Lk1ldGhvZHMpOwoKaWYgKCFQcm90 b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRFeHRlbnNpb25zICYmCiAgICBk b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVsnX19wcm90b19fJ10pIHsKICB3 aW5kb3cuSFRNTEVsZW1lbnQgPSB7IH07CiAgd2luZG93LkhUTUxFbGVtZW50LnBy b3RvdHlwZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpWydfX3Byb3Rv X18nXTsKICBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRFeHRlbnNp b25zID0gdHJ1ZTsKfQoKRWxlbWVudC5leHRlbmQgPSAoZnVuY3Rpb24oKSB7CiAg aWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVtZW50RXh0 ZW5zaW9ucykKICAgIHJldHVybiBQcm90b3R5cGUuSzsKCiAgdmFyIE1ldGhvZHMg PSB7IH0sIEJ5VGFnID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICB2YXIgZXh0 ZW5kID0gT2JqZWN0LmV4dGVuZChmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAo IWVsZW1lbnQgfHwgZWxlbWVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSB8fAogICAg ICAgIGVsZW1lbnQubm9kZVR5cGUgIT0gMSB8fCBlbGVtZW50ID09IHdpbmRvdykg cmV0dXJuIGVsZW1lbnQ7CgogICAgdmFyIG1ldGhvZHMgPSBPYmplY3QuY2xvbmUo TWV0aG9kcyksCiAgICAgIHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9VcHBl ckNhc2UoKSwgcHJvcGVydHksIHZhbHVlOwoKICAgIC8vIGV4dGVuZCBtZXRob2Rz IGZvciBzcGVjaWZpYyB0YWdzCiAgICBpZiAoQnlUYWdbdGFnTmFtZV0pIE9iamVj dC5leHRlbmQobWV0aG9kcywgQnlUYWdbdGFnTmFtZV0pOwoKICAgIGZvciAocHJv cGVydHkgaW4gbWV0aG9kcykgewogICAgICB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVy dHldOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odmFsdWUpICYmICEocHJv cGVydHkgaW4gZWxlbWVudCkpCiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB2 YWx1ZS5tZXRob2RpemUoKTsKICAgIH0KCiAgICBlbGVtZW50Ll9leHRlbmRlZEJ5 UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAgICByZXR1cm4g ZWxlbWVudDsKCiAgfSwgewogICAgcmVmcmVzaDogZnVuY3Rpb24oKSB7CiAgICAg IC8vIGV4dGVuZCBtZXRob2RzIGZvciBhbGwgdGFncyAoU2FmYXJpIGRvZXNuJ3Qg bmVlZCB0aGlzKQogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMu RWxlbWVudEV4dGVuc2lvbnMpIHsKICAgICAgICBPYmplY3QuZXh0ZW5kKE1ldGhv ZHMsIEVsZW1lbnQuTWV0aG9kcyk7CiAgICAgICAgT2JqZWN0LmV4dGVuZChNZXRo b2RzLCBFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkKTsKICAgICAgfQogICAgfQog IH0pOwoKICBleHRlbmQucmVmcmVzaCgpOwogIHJldHVybiBleHRlbmQ7Cn0pKCk7 CgpFbGVtZW50Lmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJp YnV0ZSkgewogIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1l bnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0 aG9kcy5TaW11bGF0ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7 Cn07CgpFbGVtZW50LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAg dmFyIEYgPSBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5N ZXRob2RzLkJ5VGFnOwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRl bmQoRm9ybSwgRm9ybS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5F bGVtZW50LCBGb3JtLkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5k KEVsZW1lbnQuTWV0aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAgICBPYmpl Y3QuY2xvbmUoRm9ybS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0 LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAg T2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRB UkVBIjogT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7 CiAgfQoKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFn TmFtZSA9IG1ldGhvZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0K CiAgaWYgKCF0YWdOYW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywg bWV0aG9kcyB8fCB7IH0pOwogIGVsc2UgewogICAgaWYgKE9iamVjdC5pc0FycmF5 KHRhZ05hbWUpKSB0YWdOYW1lLmVhY2goZXh0ZW5kKTsKICAgIGVsc2UgZXh0ZW5k KHRhZ05hbWUpOwogIH0KCiAgZnVuY3Rpb24gZXh0ZW5kKHRhZ05hbWUpIHsKICAg IHRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICBpZiAoIUVsZW1l bnQuTWV0aG9kcy5CeVRhZ1t0YWdOYW1lXSkKICAgICAgRWxlbWVudC5NZXRob2Rz LkJ5VGFnW3RhZ05hbWVdID0geyB9OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50 Lk1ldGhvZHMuQnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rp b24gY29weShtZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAg ICBvbmx5SWZBYnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAgICBmb3Ig KHZhciBwcm9wZXJ0eSBpbiBtZXRob2RzKSB7CiAgICAgIHZhciB2YWx1ZSA9IG1l dGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoIU9iamVjdC5pc0Z1bmN0aW9uKHZh bHVlKSkgY29udGludWU7CiAgICAgIGlmICghb25seUlmQWJzZW50IHx8ICEocHJv cGVydHkgaW4gZGVzdGluYXRpb24pKQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3Bl cnR5XSA9IHZhbHVlLm1ldGhvZGl6ZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24g ZmluZERPTUNsYXNzKHRhZ05hbWUpIHsKICAgIHZhciBrbGFzczsKICAgIHZhciB0 cmFucyA9IHsKICAgICAgIk9QVEdST1VQIjogIk9wdEdyb3VwIiwgIlRFWFRBUkVB IjogIlRleHRBcmVhIiwgIlAiOiAiUGFyYWdyYXBoIiwKICAgICAgIkZJRUxEU0VU IjogIkZpZWxkU2V0IiwgIlVMIjogIlVMaXN0IiwgIk9MIjogIk9MaXN0IiwgIkRM IjogIkRMaXN0IiwKICAgICAgIkRJUiI6ICJEaXJlY3RvcnkiLCAiSDEiOiAiSGVh ZGluZyIsICJIMiI6ICJIZWFkaW5nIiwgIkgzIjogIkhlYWRpbmciLAogICAgICAi SDQiOiAiSGVhZGluZyIsICJINSI6ICJIZWFkaW5nIiwgIkg2IjogIkhlYWRpbmci LCAiUSI6ICJRdW90ZSIsCiAgICAgICJJTlMiOiAiTW9kIiwgIkRFTCI6ICJNb2Qi LCAiQSI6ICJBbmNob3IiLCAiSU1HIjogIkltYWdlIiwgIkNBUFRJT04iOgogICAg ICAiVGFibGVDYXB0aW9uIiwgIkNPTCI6ICJUYWJsZUNvbCIsICJDT0xHUk9VUCI6 ICJUYWJsZUNvbCIsICJUSEVBRCI6CiAgICAgICJUYWJsZVNlY3Rpb24iLCAiVEZP T1QiOiAiVGFibGVTZWN0aW9uIiwgIlRCT0RZIjogIlRhYmxlU2VjdGlvbiIsICJU UiI6CiAgICAgICJUYWJsZVJvdyIsICJUSCI6ICJUYWJsZUNlbGwiLCAiVEQiOiAi VGFibGVDZWxsIiwgIkZSQU1FU0VUIjoKICAgICAgIkZyYW1lU2V0IiwgIklGUkFN RSI6ICJJRnJhbWUiCiAgICB9OwogICAgaWYgKHRyYW5zW3RhZ05hbWVdKSBrbGFz cyA9ICdIVE1MJyArIHRyYW5zW3RhZ05hbWVdICsgJ0VsZW1lbnQnOwogICAgaWYg KHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3Mg PSAnSFRNTCcgKyB0YWdOYW1lICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1tr bGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcg KyB0YWdOYW1lLmNhcGl0YWxpemUoKSArICdFbGVtZW50JzsKICAgIGlmICh3aW5k b3dba2xhc3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKCiAgICB3aW5kb3dba2xh c3NdID0geyB9OwogICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVu dC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpWydfX3Byb3RvX18nXTsKICAgIHJldHVy biB3aW5kb3dba2xhc3NdOwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVuc2lvbnMp IHsKICAgIGNvcHkoRWxlbWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5wcm90b3R5 cGUpOwogICAgY29weShFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxl bWVudC5wcm90b3R5cGUsIHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVt ZW50RXh0ZW5zaW9ucykgewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0 aG9kcy5CeVRhZykgewogICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFn KTsKICAgICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZChrbGFzcykpIGNvbnRpbnVl OwogICAgICBjb3B5KFRbdGFnXSwga2xhc3MucHJvdG90eXBlKTsKICAgIH0KICB9 CgogIE9iamVjdC5leHRlbmQoRWxlbWVudCwgRWxlbWVudC5NZXRob2RzKTsKICBk ZWxldGUgRWxlbWVudC5CeVRhZzsKCiAgaWYgKEVsZW1lbnQuZXh0ZW5kLnJlZnJl c2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2goKTsKICBFbGVtZW50LmNhY2hlID0g eyB9Owp9OwoKZG9jdW1lbnQudmlld3BvcnQgPSB7CiAgZ2V0RGltZW5zaW9uczog ZnVuY3Rpb24oKSB7CiAgICB2YXIgZGltZW5zaW9ucyA9IHsgfSwgQiA9IFByb3Rv dHlwZS5Ccm93c2VyOwogICAgJHcoJ3dpZHRoIGhlaWdodCcpLmVhY2goZnVuY3Rp b24oZCkgewogICAgICB2YXIgRCA9IGQuY2FwaXRhbGl6ZSgpOwogICAgICBpZiAo Qi5XZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSB7CiAgICAgICAgLy8gU2Fm YXJpIDwzLjAgbmVlZHMgc2VsZi5pbm5lcldpZHRoL0hlaWdodAogICAgICAgIGRp bWVuc2lvbnNbZF0gPSBzZWxmWydpbm5lcicgKyBEXTsKICAgICAgfSBlbHNlIGlm IChCLk9wZXJhICYmIHBhcnNlRmxvYXQod2luZG93Lm9wZXJhLnZlcnNpb24oKSkg PCA5LjUpIHsKICAgICAgICAvLyBPcGVyYSA8OS41IG5lZWRzIGRvY3VtZW50LmJv ZHkuY2xpZW50V2lkdGgvSGVpZ2h0CiAgICAgICAgZGltZW5zaW9uc1tkXSA9IGRv Y3VtZW50LmJvZHlbJ2NsaWVudCcgKyBEXQogICAgICB9IGVsc2UgewogICAgICAg IGRpbWVuc2lvbnNbZF0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbJ2NsaWVu dCcgKyBEXTsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZGltZW5zaW9uczsK ICB9LAoKICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5n ZXREaW1lbnNpb25zKCkud2lkdGg7CiAgfSwKCiAgZ2V0SGVpZ2h0OiBmdW5jdGlv bigpIHsKICAgIHJldHVybiB0aGlzLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAg fSwKCiAgZ2V0U2Nyb2xsT2Zmc2V0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4g RWxlbWVudC5fcmV0dXJuT2Zmc2V0KAogICAgICB3aW5kb3cucGFnZVhPZmZzZXQg fHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1l bnQuYm9keS5zY3JvbGxMZWZ0LAogICAgICB3aW5kb3cucGFnZVlPZmZzZXQgfHwg ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5i b2R5LnNjcm9sbFRvcCk7CiAgfQp9OwovKiBQb3J0aW9ucyBvZiB0aGUgU2VsZWN0 b3IgY2xhc3MgYXJlIGRlcml2ZWQgZnJvbSBKYWNrIFNsb2N1bSdzIERvbVF1ZXJ5 LAogKiBwYXJ0IG9mIFlVSS1FeHQgdmVyc2lvbiAwLjQwLCBkaXN0cmlidXRlZCB1 bmRlciB0aGUgdGVybXMgb2YgYW4gTUlULXN0eWxlCiAqIGxpY2Vuc2UuICBQbGVh c2Ugc2VlIGh0dHA6Ly93d3cueXVpLWV4dC5jb20vIGZvciBtb3JlIGluZm9ybWF0 aW9uLiAqLwoKdmFyIFNlbGVjdG9yID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFs aXplOiBmdW5jdGlvbihleHByZXNzaW9uKSB7CiAgICB0aGlzLmV4cHJlc3Npb24g PSBleHByZXNzaW9uLnN0cmlwKCk7CgogICAgaWYgKHRoaXMuc2hvdWxkVXNlU2Vs ZWN0b3JzQVBJKCkpIHsKICAgICAgdGhpcy5tb2RlID0gJ3NlbGVjdG9yc0FQSSc7 CiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkVXNlWFBhdGgoKSkgewogICAgICB0 aGlzLm1vZGUgPSAneHBhdGgnOwogICAgICB0aGlzLmNvbXBpbGVYUGF0aE1hdGNo ZXIoKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMubW9kZSA9ICJub3JtYWwiOwog ICAgICB0aGlzLmNvbXBpbGVNYXRjaGVyKCk7CiAgICB9CgogIH0sCgogIHNob3Vs ZFVzZVhQYXRoOiBmdW5jdGlvbigpIHsKICAgIGlmICghUHJvdG90eXBlLkJyb3dz ZXJGZWF0dXJlcy5YUGF0aCkgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBlID0gdGhp cy5leHByZXNzaW9uOwoKICAgIC8vIFNhZmFyaSAzIGNob2tlcyBvbiA6Ki1vZi10 eXBlIGFuZCA6ZW1wdHkKICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQg JiYKICAgICAoZS5pbmNsdWRlKCItb2YtdHlwZSIpIHx8IGUuaW5jbHVkZSgiOmVt cHR5IikpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gWFBhdGggY2FuJ3Qg ZG8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVzLCBub3IgY2FuIGl0IHJlYWQKICAgIC8v IHRoZSAiY2hlY2tlZCIgcHJvcGVydHkgZnJvbSBET00gbm9kZXMKICAgIGlmICgo LyhcW1tcdy1dKj86fDpjaGVja2VkKS8pLnRlc3QoZSkpCiAgICAgIHJldHVybiBm YWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBzaG91bGRVc2VTZWxlY3Rv cnNBUEk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFQcm90b3R5cGUuQnJvd3NlckZl YXR1cmVzLlNlbGVjdG9yc0FQSSkgcmV0dXJuIGZhbHNlOwoKICAgIGlmICghU2Vs ZWN0b3IuX2RpdikgU2VsZWN0b3IuX2RpdiA9IG5ldyBFbGVtZW50KCdkaXYnKTsK CiAgICAvLyBNYWtlIHN1cmUgdGhlIGJyb3dzZXIgdHJlYXRzIHRoZSBzZWxlY3Rv ciBhcyB2YWxpZC4gVGVzdCBvbiBhbgogICAgLy8gaXNvbGF0ZWQgZWxlbWVudCB0 byBtaW5pbWl6ZSBjb3N0IG9mIHRoaXMgY2hlY2suCiAgICB0cnkgewogICAgICBT ZWxlY3Rvci5fZGl2LnF1ZXJ5U2VsZWN0b3IodGhpcy5leHByZXNzaW9uKTsKICAg IH0gY2F0Y2goZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcmV0 dXJuIHRydWU7CiAgfSwKCiAgY29tcGlsZU1hdGNoZXI6IGZ1bmN0aW9uKCkgewog ICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVy bnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2VsZWN0b3Iu Y3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0p IHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2VdOwogICAg ICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlzLm1hdGNo ZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAgICAidmFy IHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxzZSwgbjsi XTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0KGUpKSB7 CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAg IHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAg ICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNbaV0pID8g Y1tpXShtKSA6CiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZShjW2ldKS5ldmFsdWF0 ZShtKSk7CiAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcnKTsKICAgICAg ICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHRoaXMubWF0 Y2hlci5wdXNoKCJyZXR1cm4gaC51bmlxdWUobik7XG59Iik7CiAgICBldmFsKHRo aXMubWF0Y2hlci5qb2luKCdcbicpKTsKICAgIFNlbGVjdG9yLl9jYWNoZVt0aGlz LmV4cHJlc3Npb25dID0gdGhpcy5tYXRjaGVyOwogIH0sCgogIGNvbXBpbGVYUGF0 aE1hdGNoZXI6IGZ1bmN0aW9uKCkgewogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Np b24sIHBzID0gU2VsZWN0b3IucGF0dGVybnMsCiAgICAgICAgeCA9IFNlbGVjdG9y LnhwYXRoLCBsZSwgbTsKCiAgICBpZiAoU2VsZWN0b3IuX2NhY2hlW2VdKSB7CiAg ICAgIHRoaXMueHBhdGggPSBTZWxlY3Rvci5fY2FjaGVbZV07IHJldHVybjsKICAg IH0KCiAgICB0aGlzLm1hdGNoZXIgPSBbJy4vLyonXTsKICAgIHdoaWxlIChlICYm IGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgbGUgPSBlOwogICAg ICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgaWYgKG0gPSBlLm1hdGNoKHBz W2ldKSkgewogICAgICAgICAgdGhpcy5tYXRjaGVyLnB1c2goT2JqZWN0LmlzRnVu Y3Rpb24oeFtpXSkgPyB4W2ldKG0pIDoKICAgICAgICAgICAgbmV3IFRlbXBsYXRl KHhbaV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVsw XSwgJycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9 CgogICAgdGhpcy54cGF0aCA9IHRoaXMubWF0Y2hlci5qb2luKCcnKTsKICAgIFNl bGVjdG9yLl9jYWNoZVt0aGlzLmV4cHJlc3Npb25dID0gdGhpcy54cGF0aDsKICB9 LAoKICBmaW5kRWxlbWVudHM6IGZ1bmN0aW9uKHJvb3QpIHsKICAgIHJvb3QgPSBy b290IHx8IGRvY3VtZW50OwogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHJl c3VsdHM7CgogICAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgICAgY2FzZSAnc2Vs ZWN0b3JzQVBJJzoKICAgICAgICAvLyBxdWVyeVNlbGVjdG9yQWxsIHF1ZXJpZXMg ZG9jdW1lbnQtd2lkZSwgdGhlbiBmaWx0ZXJzIHRvIGRlc2NlbmRhbnRzCiAgICAg ICAgLy8gb2YgdGhlIGNvbnRleHQgZWxlbWVudC4gVGhhdCdzIG5vdCB3aGF0IHdl IHdhbnQuCiAgICAgICAgLy8gQWRkIGFuIGV4cGxpY2l0IGNvbnRleHQgdG8gdGhl IHNlbGVjdG9yIGlmIG5lY2Vzc2FyeS4KICAgICAgICBpZiAocm9vdCAhPT0gZG9j dW1lbnQpIHsKICAgICAgICAgIHZhciBvbGRJZCA9IHJvb3QuaWQsIGlkID0gJChy b290KS5pZGVudGlmeSgpOwogICAgICAgICAgZSA9ICIjIiArIGlkICsgIiAiICsg ZTsKICAgICAgICB9CgogICAgICAgIHJlc3VsdHMgPSAkQShyb290LnF1ZXJ5U2Vs ZWN0b3JBbGwoZSkpLm1hcChFbGVtZW50LmV4dGVuZCk7CiAgICAgICAgcm9vdC5p ZCA9IG9sZElkOwoKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgY2FzZSAn eHBhdGgnOgogICAgICAgIHJldHVybiBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQ YXRoKHRoaXMueHBhdGgsIHJvb3QpOwogICAgICBkZWZhdWx0OgogICAgICAgcmV0 dXJuIHRoaXMubWF0Y2hlcihyb290KTsKICAgIH0KICB9LAoKICBtYXRjaDogZnVu Y3Rpb24oZWxlbWVudCkgewogICAgdGhpcy50b2tlbnMgPSBbXTsKCiAgICB2YXIg ZSA9IHRoaXMuZXhwcmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJucywgYXMg PSBTZWxlY3Rvci5hc3NlcnRpb25zOwogICAgdmFyIGxlLCBwLCBtOwoKICAgIHdo aWxlIChlICYmIGxlICE9PSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAgICAgIGxl ID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAgIHAgPSBwc1tp XTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAgICAgIC8vIHVz ZSB0aGUgU2VsZWN0b3IuYXNzZXJ0aW9ucyBtZXRob2RzIHVubGVzcyB0aGUgc2Vs ZWN0b3IKICAgICAgICAgIC8vIGlzIHRvbyBjb21wbGV4LgogICAgICAgICAgaWYg KGFzW2ldKSB7CiAgICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2goW2ksIE9iamVj dC5jbG9uZShtKV0pOwogICAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcn KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIHJlbHVjdGFudGx5 IGRvIGEgZG9jdW1lbnQtd2lkZSBzZWFyY2gKICAgICAgICAgICAgLy8gYW5kIGxv b2sgZm9yIGEgbWF0Y2ggaW4gdGhlIGFycmF5CiAgICAgICAgICAgIHJldHVybiB0 aGlzLmZpbmRFbGVtZW50cyhkb2N1bWVudCkuaW5jbHVkZShlbGVtZW50KTsKICAg ICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB2YXIgbWF0Y2gg PSB0cnVlLCBuYW1lLCBtYXRjaGVzOwogICAgZm9yICh2YXIgaSA9IDAsIHRva2Vu OyB0b2tlbiA9IHRoaXMudG9rZW5zW2ldOyBpKyspIHsKICAgICAgbmFtZSA9IHRv a2VuWzBdLCBtYXRjaGVzID0gdG9rZW5bMV07CiAgICAgIGlmICghU2VsZWN0b3Iu YXNzZXJ0aW9uc1tuYW1lXShlbGVtZW50LCBtYXRjaGVzKSkgewogICAgICAgIG1h dGNoID0gZmFsc2U7IGJyZWFrOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG1h dGNoOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0 aGlzLmV4cHJlc3Npb247CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24oKSB7CiAg ICByZXR1cm4gIiM8U2VsZWN0b3I6IiArIHRoaXMuZXhwcmVzc2lvbi5pbnNwZWN0 KCkgKyAiPiI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU2VsZWN0b3IsIHsKICBf Y2FjaGU6IHsgfSwKCiAgeHBhdGg6IHsKICAgIGRlc2NlbmRhbnQ6ICAgIi8vKiIs CiAgICBjaGlsZDogICAgICAgICIvKiIsCiAgICBhZGphY2VudDogICAgICIvZm9s bG93aW5nLXNpYmxpbmc6OipbMV0iLAogICAgbGF0ZXJTaWJsaW5nOiAnL2ZvbGxv d2luZy1zaWJsaW5nOjoqJywKICAgIHRhZ05hbWU6ICAgICAgZnVuY3Rpb24obSkg ewogICAgICBpZiAobVsxXSA9PSAnKicpIHJldHVybiAnJzsKICAgICAgcmV0dXJu ICJbbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b0xvd2VyQ2FzZSgpICsKICAgICAg ICAgICAgICInIG9yIGxvY2FsLW5hbWUoKT0nIiArIG1bMV0udG9VcHBlckNhc2Uo KSArICInXSI7CiAgICB9LAogICAgY2xhc3NOYW1lOiAgICAiW2NvbnRhaW5zKGNv bmNhdCgnICcsIEBjbGFzcywgJyAnKSwgJyAjezF9ICcpXSIsCiAgICBpZDogICAg ICAgICAgICJbQGlkPScjezF9J10iLAogICAgYXR0clByZXNlbmNlOiBmdW5jdGlv bihtKSB7CiAgICAgIG1bMV0gPSBtWzFdLnRvTG93ZXJDYXNlKCk7CiAgICAgIHJl dHVybiBuZXcgVGVtcGxhdGUoIltAI3sxfV0iKS5ldmFsdWF0ZShtKTsKICAgIH0s CiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAgICAgIG1bMV0gPSBtWzFdLnRvTG93 ZXJDYXNlKCk7CiAgICAgIG1bM10gPSBtWzVdIHx8IG1bNl07CiAgICAgIHJldHVy biBuZXcgVGVtcGxhdGUoU2VsZWN0b3IueHBhdGgub3BlcmF0b3JzW21bMl1dKS5l dmFsdWF0ZShtKTsKICAgIH0sCiAgICBwc2V1ZG86IGZ1bmN0aW9uKG0pIHsKICAg ICAgdmFyIGggPSBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zW21bMV1dOwogICAgICBp ZiAoIWgpIHJldHVybiAnJzsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKGgp KSByZXR1cm4gaChtKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShTZWxlY3Rv ci54cGF0aC5wc2V1ZG9zW21bMV1dKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBv cGVyYXRvcnM6IHsKICAgICAgJz0nOiAgIltAI3sxfT0nI3szfSddIiwKICAgICAg JyE9JzogIltAI3sxfSE9JyN7M30nXSIsCiAgICAgICdePSc6ICJbc3RhcnRzLXdp dGgoQCN7MX0sICcjezN9JyldIiwKICAgICAgJyQ9JzogIltzdWJzdHJpbmcoQCN7 MX0sIChzdHJpbmctbGVuZ3RoKEAjezF9KSAtIHN0cmluZy1sZW5ndGgoJyN7M30n KSArIDEpKT0nI3szfSddIiwKICAgICAgJyo9JzogIltjb250YWlucyhAI3sxfSwg JyN7M30nKV0iLAogICAgICAnfj0nOiAiW2NvbnRhaW5zKGNvbmNhdCgnICcsIEAj ezF9LCAnICcpLCAnICN7M30gJyldIiwKICAgICAgJ3w9JzogIltjb250YWlucyhj b25jYXQoJy0nLCBAI3sxfSwgJy0nKSwgJy0jezN9LScpXSIKICAgIH0sCiAgICBw c2V1ZG9zOiB7CiAgICAgICdmaXJzdC1jaGlsZCc6ICdbbm90KHByZWNlZGluZy1z aWJsaW5nOjoqKV0nLAogICAgICAnbGFzdC1jaGlsZCc6ICAnW25vdChmb2xsb3dp bmctc2libGluZzo6KildJywKICAgICAgJ29ubHktY2hpbGQnOiAgJ1tub3QocHJl Y2VkaW5nLXNpYmxpbmc6Oiogb3IgZm9sbG93aW5nLXNpYmxpbmc6OiopXScsCiAg ICAgICdlbXB0eSc6ICAgICAgICJbY291bnQoKikgPSAwIGFuZCAoY291bnQodGV4 dCgpKSA9IDApXSIsCiAgICAgICdjaGVja2VkJzogICAgICJbQGNoZWNrZWRdIiwK ICAgICAgJ2Rpc2FibGVkJzogICAgIlsoQGRpc2FibGVkKSBhbmQgKEB0eXBlIT0n aGlkZGVuJyldIiwKICAgICAgJ2VuYWJsZWQnOiAgICAgIltub3QoQGRpc2FibGVk KSBhbmQgKEB0eXBlIT0naGlkZGVuJyldIiwKICAgICAgJ25vdCc6IGZ1bmN0aW9u KG0pIHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5wYXR0ZXJu cywKICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsKCiAgICAg ICAgdmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYmIGxlICE9 IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsKICAgICAg ICAgIGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9IGUubWF0 Y2gocFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVuY3Rpb24o eFtpXSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0p OwogICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vic3RyaW5n KDEsIHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUgPSBlLnJl cGxhY2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAiW25vdCgi ICsgZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9LAogICAg ICAnbnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAgcmV0dXJu IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVjZWRpbmct c2libGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250aC1sYXN0 LWNoaWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54 cGF0aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxpbmc6Oiop ICsgMSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6ICAgIGZ1 bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRv cy5udGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFz dC1vZi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rv ci54cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlvbigpKSAi LCBtKTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVuY3Rpb24o bSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54cGF0aC5w c2V1ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAnbGFzdC1v Zi10eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIxIjsgcmV0 dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5cGUnXSht KTsKICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rpb24obSkg ewogICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsgcmV0dXJu IHBbJ2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSddKG0pOwog ICAgICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7CiAgICAg ICAgdmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAgICAgIGlm IChmb3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAgICAgICBp ZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgICAg aWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdpdCBvbmx5 CiAgICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsgbW1bMV0g KyAnXSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigtP1xkKik/ bigoWystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYgKG1tWzFd ID09ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1bMV0gPyBO dW1iZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0gPyBOdW1i ZXIobW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgje2ZyYWdt ZW50fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAgICAgIigo I3tmcmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAgICAgICAg cmV0dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsKICAgICAg ICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwogICAgICAg IH0KICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0YWdOYW1l OiAgICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAgICAgYyA9 IGZhbHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05hbWUobiwg ciwgIiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAgICAgICAg ICduID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9IGZhbHNl OycsCiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2Uobiwgciwg IiN7MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7 CiAgICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJuIG5ldyBU ZW1wbGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9IiwgIiN7Mn0i LCBjKTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVk bzogZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1bNl0ucmVw bGFjZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24g PSBoLnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBmYWxzZTsn KS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdjID0gImRl c2NlbmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxkIjsnLAog ICAgYWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxhdGVyU2li bGluZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVybnM6IHsK ICAgIC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAgICAvLyAo YW5kIGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9yKQogICAg bGF0ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAgICAvXlxz Kj5ccyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAgIGRlc2Nl bmRhbnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwogICAgdGFn TmFtZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAgaWQ6ICAg ICAgICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05hbWU6ICAg IC9eXC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigoZmlyc3R8 bGFzdHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxlbXB0eXxj aGVja2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwkfCg/PVxz fFs6K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWygoPzpbXHddKzopP1tc d10rKVxdLywKICAgIGF0dHI6ICAgICAgICAgL1xbKCg/Oltcdy1dKjopP1tcdy1d KylccyooPzooWyFeJCp+fF0/PSlccyooKFsnIl0pKFteXDRdKj8pXDR8KFteJyJd W15cXV0qPykpKT9cXS8KICB9LAoKICAvLyBmb3IgU2VsZWN0b3IubWF0Y2ggYW5k IEVsZW1lbnQjbWF0Y2gKICBhc3NlcnRpb25zOiB7CiAgICB0YWdOYW1lOiBmdW5j dGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBtYXRjaGVzWzFd LnRvVXBwZXJDYXNlKCkgPT0gZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk7 CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hl cykgewogICAgICByZXR1cm4gRWxlbWVudC5oYXNDbGFzc05hbWUoZWxlbWVudCwg bWF0Y2hlc1sxXSk7CiAgICB9LAoKICAgIGlkOiBmdW5jdGlvbihlbGVtZW50LCBt YXRjaGVzKSB7CiAgICAgIHJldHVybiBlbGVtZW50LmlkID09PSBtYXRjaGVzWzFd OwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKGVsZW1lbnQsIG1h dGNoZXMpIHsKICAgICAgcmV0dXJuIEVsZW1lbnQuaGFzQXR0cmlidXRlKGVsZW1l bnQsIG1hdGNoZXNbMV0pOwogICAgfSwKCiAgICBhdHRyOiBmdW5jdGlvbihlbGVt ZW50LCBtYXRjaGVzKSB7CiAgICAgIHZhciBub2RlVmFsdWUgPSBFbGVtZW50LnJl YWRBdHRyaWJ1dGUoZWxlbWVudCwgbWF0Y2hlc1sxXSk7CiAgICAgIHJldHVybiBu b2RlVmFsdWUgJiYgU2VsZWN0b3Iub3BlcmF0b3JzW21hdGNoZXNbMl1dKG5vZGVW YWx1ZSwgbWF0Y2hlc1s1XSB8fCBtYXRjaGVzWzZdKTsKICAgIH0KICB9LAoKICBo YW5kbGVyczogewogICAgLy8gVVRJTElUWSBGVU5DVElPTlMKICAgIC8vIGpvaW5z IHR3byBjb2xsZWN0aW9ucwogICAgY29uY2F0OiBmdW5jdGlvbihhLCBiKSB7CiAg ICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gYltpXTsgaSsrKQogICAg ICAgIGEucHVzaChub2RlKTsKICAgICAgcmV0dXJuIGE7CiAgICB9LAoKICAgIC8v IG1hcmtzIGFuIGFycmF5IG9mIG5vZGVzIGZvciBjb3VudGluZwogICAgbWFyazog ZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIF90cnVlID0gUHJvdG90eXBlLmVt cHR5RnVuY3Rpb247CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0g bm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVkQnlQcm90b3R5cGUg PSBfdHJ1ZTsKICAgICAgcmV0dXJuIG5vZGVzOwogICAgfSwKCiAgICB1bm1hcms6 IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBu b2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVkQnlQcm90 b3R5cGUgPSB1bmRlZmluZWQ7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0sCgog ICAgLy8gbWFyayBlYWNoIGNoaWxkIG5vZGUgd2l0aCBpdHMgcG9zaXRpb24gKGZv ciBudGggY2FsbHMpCiAgICAvLyAib2ZUeXBlIiBmbGFnIGluZGljYXRlcyB3aGV0 aGVyIHdlJ3JlIGluZGV4aW5nIGZvciBudGgtb2YtdHlwZQogICAgLy8gcmF0aGVy IHRoYW4gbnRoLWNoaWxkCiAgICBpbmRleDogZnVuY3Rpb24ocGFyZW50Tm9kZSwg cmV2ZXJzZSwgb2ZUeXBlKSB7CiAgICAgIHBhcmVudE5vZGUuX2NvdW50ZWRCeVBy b3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICBpZiAocmV2 ZXJzZSkgewogICAgICAgIGZvciAodmFyIG5vZGVzID0gcGFyZW50Tm9kZS5jaGls ZE5vZGVzLCBpID0gbm9kZXMubGVuZ3RoIC0gMSwgaiA9IDE7IGkgPj0gMDsgaS0t KSB7CiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwogICAgICAgICAgaWYg KG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9jb3VudGVk QnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAgICB9CiAg ICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAxLCBub2Rl cyA9IHBhcmVudE5vZGUuY2hpbGROb2Rlczsgbm9kZSA9IG5vZGVzW2ldOyBpKysp CiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxICYmICghb2ZUeXBlIHx8 IG5vZGUuX2NvdW50ZWRCeVByb3RvdHlwZSkpIG5vZGUubm9kZUluZGV4ID0gaisr OwogICAgICB9CiAgICB9LAoKICAgIC8vIGZpbHRlcnMgb3V0IGR1cGxpY2F0ZXMg YW5kIGV4dGVuZHMgYWxsIG5vZGVzCiAgICB1bmlxdWU6IGZ1bmN0aW9uKG5vZGVz KSB7CiAgICAgIGlmIChub2Rlcy5sZW5ndGggPT0gMCkgcmV0dXJuIG5vZGVzOwog ICAgICB2YXIgcmVzdWx0cyA9IFtdLCBuOwogICAgICBmb3IgKHZhciBpID0gMCwg bCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykKICAgICAgICBpZiAoIShuID0g bm9kZXNbaV0pLl9jb3VudGVkQnlQcm90b3R5cGUpIHsKICAgICAgICAgIG4uX2Nv dW50ZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAg ICAgICAgcmVzdWx0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKG4pKTsKICAgICAgICB9 CiAgICAgIHJldHVybiBTZWxlY3Rvci5oYW5kbGVycy51bm1hcmsocmVzdWx0cyk7 CiAgICB9LAoKICAgIC8vIENPTUJJTkFUT1IgRlVOQ1RJT05TCiAgICBkZXNjZW5k YW50OiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhh bmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2Rl OyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChyZXN1bHRz LCBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpOwogICAgICByZXR1cm4g cmVzdWx0czsKICAgIH0sCgogICAgY2hpbGQ6IGZ1bmN0aW9uKG5vZGVzKSB7CiAg ICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAodmFyIGkg PSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7 CiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGNoaWxkOyBjaGlsZCA9IG5vZGUuY2hp bGROb2Rlc1tqXTsgaisrKQogICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09 IDEgJiYgY2hpbGQudGFnTmFtZSAhPSAnIScpIHJlc3VsdHMucHVzaChjaGlsZCk7 CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGFkamFj ZW50OiBmdW5jdGlvbihub2RlcykgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVz dWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAg IHZhciBuZXh0ID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSk7CiAgICAg ICAgaWYgKG5leHQpIHJlc3VsdHMucHVzaChuZXh0KTsKICAgICAgfQogICAgICBy ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbGF0ZXJTaWJsaW5nOiBmdW5jdGlv bihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAg ICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9k ZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChyZXN1bHRzLCBFbGVtZW50Lm5l eHRTaWJsaW5ncyhub2RlKSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwK CiAgICBuZXh0RWxlbWVudFNpYmxpbmc6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAg d2hpbGUgKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKQogICAgICAgIGlmIChub2Rl Lm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsK ICAgIH0sCgogICAgcHJldmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rpb24obm9k ZSkgewogICAgICB3aGlsZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKQog ICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAg ICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJT05TCiAg ICB0YWdOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwgY29tYmlu YXRvcikgewogICAgICB2YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNl KCk7CiAgICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5oYW5kbGVy czsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsK ICAgICAgICAgIC8vIGZhc3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5kYW50IGNv bWJpbmF0b3JzCiAgICAgICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVzY2VuZGFu dCIpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBu b2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGguY29uY2F0KHJlc3VsdHMsIG5v ZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAgICAgICBy ZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRoaXNbY29t YmluYXRvcl0obm9kZXMpOwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0gIioiKSBy ZXR1cm4gbm9kZXM7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBu b2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlLnRh Z05hbWUudG9VcHBlckNhc2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMucHVzaChu b2RlKTsKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVy biByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAg ICBpZDogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAg ICAgIHZhciB0YXJnZXROb2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVy czsKICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAgIGlmICgh bm9kZXMgJiYgcm9vdCA9PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXROb2RlXTsK ICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAg ICAgICAgIGlmIChjb21iaW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAgICAgICAg Zm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAg ICAgICAgICAgIGlmICh0YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9kZSkgcmV0 dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRv ciA9PSAnZGVzY2VuZGFudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmIChF bGVtZW50LmRlc2NlbmRhbnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0dXJuIFt0 YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAn YWRqYWNlbnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBu b2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgICAgICBpZiAoU2VsZWN0b3Iu aGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyh0YXJnZXROb2RlKSA9PSBu b2RlKQogICAgICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAg ICAgIH0gZWxzZSBub2RlcyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAg IH0KICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld OyBpKyspCiAgICAgICAgICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSByZXR1cm4g W3RhcmdldE5vZGVdOwogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICBy ZXR1cm4gKHRhcmdldE5vZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2YodGFyZ2V0 Tm9kZSwgcm9vdCkpID8gW3RhcmdldE5vZGVdIDogW107CiAgICB9LAoKICAgIGNs YXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwgY29tYmlu YXRvcikgewogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0 aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmhh bmRsZXJzLmJ5Q2xhc3NOYW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUpOwogICAg fSwKCiAgICBieUNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNz TmFtZSkgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9yLmhhbmRs ZXJzLmRlc2NlbmRhbnQoW3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9ICcgJyAr IGNsYXNzTmFtZSArICcgJzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMg PSBbXSwgbm9kZSwgbm9kZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ldOyBpKysp IHsKICAgICAgICBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAg ICAgaWYgKG5vZGVDbGFzc05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVlOwogICAg ICAgIGlmIChub2RlQ2xhc3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAnICsgbm9k ZUNsYXNzTmFtZSArICcgJykuaW5jbHVkZShuZWVkbGUpKQogICAgICAgICAgcmVz dWx0cy5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwog ICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCByb290LCBh dHRyLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gcm9v dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9kZXMgJiYg Y29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAg ICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7 IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50Lmhhc0F0 dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICBy ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24obm9kZXMs IHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikgewogICAg ICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUo IioiKTsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhp c1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0gU2VsZWN0 b3Iub3BlcmF0b3JzW29wZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAgICBmb3Ig KHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAg ICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5vZGUsIGF0 dHIpOwogICAgICAgIGlmIChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlOwog ICAgICAgIGlmIChoYW5kbGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1bHRzLnB1 c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoK ICAgIHBzZXVkbzogZnVuY3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCByb290LCBj b21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9yKSBub2Rl cyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5vZGVzKSBu b2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgcmV0 dXJuIFNlbGVjdG9yLnBzZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCByb290KTsK ICAgIH0KICB9LAoKICBwc2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQnOiBmdW5j dGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAs IHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAg ICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGlu Zyhub2RlKSkgY29udGludWU7CiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7 CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ2xhc3Qt Y2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9y ICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld OyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4dEVsZW1l bnRTaWJsaW5nKG5vZGUpKSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVz aChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAg ICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewog ICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBp ID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykK ICAgICAgICBpZiAoIWgucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSAmJiAh aC5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSkpCiAgICAgICAgICByZXN1bHRzLnB1 c2gobm9kZSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdudGgt Y2hpbGQnOiAgICAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsK ICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxh LCByb290KTsKICAgIH0sCiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1bmN0aW9u KG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5w c2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAgICB9LAog ICAgJ250aC1vZi10eXBlJzogICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwg cm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMs IGZvcm11bGEsIHJvb3QsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAnbnRoLWxh c3Qtb2YtdHlwZSc6IGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAg ICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwg cm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5cGUnOiAg ICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4g U2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFsc2UsIHRy dWUpOwogICAgfSwKICAgICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9k ZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVk b3MubnRoKG5vZGVzLCAiMSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAgfSwKICAg ICdvbmx5LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJv b3QpIHsKICAgICAgdmFyIHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAgICByZXR1 cm4gcFsnbGFzdC1vZi10eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5vZGVzLCBm b3JtdWxhLCByb290KSwgZm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAgIC8vIGhh bmRsZXMgdGhlIGFuK2IgbG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0aW9uKGEs IGIsIHRvdGFsKSB7CiAgICAgIGlmIChhID09IDApIHJldHVybiBiID4gMCA/IFti XSA6IFtdOwogICAgICByZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChbXSwgZnVu Y3Rpb24obWVtbywgaSkgewogICAgICAgIGlmICgwID09IChpIC0gYikgJSBhICYm IChpIC0gYikgLyBhID49IDApIG1lbW8ucHVzaChpKTsKICAgICAgICByZXR1cm4g bWVtbzsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRoKC1sYXN0 KS1jaGlsZCwgbnRoKC1sYXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxhc3QpLW9m LXR5cGUKICAgIG50aDogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QsIHJl dmVyc2UsIG9mVHlwZSkgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJl dHVybiBbXTsKICAgICAgaWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3JtdWxhID0g JzJuKzAnOwogICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAn Mm4rMSc7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJlc3VsdHMg PSBbXSwgaW5kZXhlZCA9IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMpOwogICAg ICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsK ICAgICAgICBpZiAoIW5vZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJvdG90eXBl KSB7CiAgICAgICAgICBoLmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwg b2ZUeXBlKTsKICAgICAgICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUp OwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxk KyQvKSkgeyAvLyBqdXN0IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJl cihmb3JtdWxhKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9 IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0g Zm9ybXVsYSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0g PSBmb3JtdWxhLm1hdGNoKC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAv LyBhbitiCiAgICAgICAgaWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAg ICAgdmFyIGEgPSBtWzFdID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIg YiA9IG1bMl0gPyBOdW1iZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2Vz ID0gU2VsZWN0b3IucHNldWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0 aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxl bmd0aDsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFy IGogPSAwOyBqIDwgbDsgaisrKQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5k ZXggPT0gaW5kaWNlc1tqXSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0K ICAgICAgfQogICAgICBoLnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGlu ZGV4ZWQpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5 JzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFy IGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsr KSB7CiAgICAgICAgLy8gSUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9k ZXMKICAgICAgICBpZiAobm9kZS50YWdOYW1lID09ICchJyB8fCBub2RlLmZpcnN0 Q2hpbGQpIGNvbnRpbnVlOwogICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAg ICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ25vdCc6IGZ1 bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkgewogICAgICB2YXIgaCA9IFNl bGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUsIG07CiAgICAgIHZhciBleGNs dXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKS5maW5kRWxlbWVudHMocm9v dCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsKICAgICAgZm9yICh2YXIgaSA9 IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAg ICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVz aChub2RlKTsKICAgICAgaC51bm1hcmsoZXhjbHVzaW9ucyk7CiAgICAgIHJldHVy biByZXN1bHRzOwogICAgfSwKCiAgICAnZW5hYmxlZCc6IGZ1bmN0aW9uKG5vZGVz LCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9 IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIW5v ZGUuZGlzYWJsZWQgJiYgKCFub2RlLnR5cGUgfHwgbm9kZS50eXBlICE9PSAnaGlk ZGVuJykpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIHJldHVy biByZXN1bHRzOwogICAgfSwKCiAgICAnZGlzYWJsZWQnOiBmdW5jdGlvbihub2Rl cywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMg PSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKG5v ZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJl c3VsdHM7CiAgICB9LAoKICAgICdjaGVja2VkJzogZnVuY3Rpb24obm9kZXMsIHZh bHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10s IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChub2RlLmNo ZWNrZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7 CiAgICB9CiAgfSwKCiAgb3BlcmF0b3JzOiB7CiAgICAnPSc6ICBmdW5jdGlvbihu diwgdikgeyByZXR1cm4gbnYgPT0gdjsgfSwKICAgICchPSc6IGZ1bmN0aW9uKG52 LCB2KSB7IHJldHVybiBudiAhPSB2OyB9LAogICAgJ149JzogZnVuY3Rpb24obnYs IHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuc3RhcnRzV2l0aCh2KTsg fSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9PSB2IHx8 IG52ICYmIG52LmVuZHNXaXRoKHYpOyB9LAogICAgJyo9JzogZnVuY3Rpb24obnYs IHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuaW5jbHVkZSh2KTsgfSwK ICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRzV2l0aCh2 KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5pbmNs dWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuICgn ICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwKICAgICd8 PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgKG52IHx8ICIiKS50 b1VwcGVyQ2FzZSgpICsKICAgICAnLScpLmluY2x1ZGUoJy0nICsgKHYgfHwgIiIp LnRvVXBwZXJDYXNlKCkgKyAnLScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1bmN0aW9u KGV4cHJlc3Npb24pIHsKICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgZXhw cmVzc2lvbi5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxz KigsfCQpLywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1b MV0uc3RyaXAoKSk7CiAgICB9KTsKICAgIHJldHVybiBleHByZXNzaW9uczsKICB9 LAoKICBtYXRjaEVsZW1lbnRzOiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lv bikgewogICAgdmFyIG1hdGNoZXMgPSAkJChleHByZXNzaW9uKSwgaCA9IFNlbGVj dG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1hdGNoZXMpOwogICAgZm9yICh2YXIg aSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnRz W2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50Ll9jb3VudGVkQnlQcm90b3R5cGUp IHJlc3VsdHMucHVzaChlbGVtZW50KTsKICAgIGgudW5tYXJrKG1hdGNoZXMpOwog ICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1bmN0aW9u KGVsZW1lbnRzLCBleHByZXNzaW9uLCBpbmRleCkgewogICAgaWYgKE9iamVjdC5p c051bWJlcihleHByZXNzaW9uKSkgewogICAgICBpbmRleCA9IGV4cHJlc3Npb247 IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiBTZWxlY3Rvci5t YXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8ICcqJylbaW5kZXgg fHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1l bnQsIGV4cHJlc3Npb25zKSB7CiAgICBleHByZXNzaW9ucyA9IFNlbGVjdG9yLnNw bGl0KGV4cHJlc3Npb25zLmpvaW4oJywnKSk7CiAgICB2YXIgcmVzdWx0cyA9IFtd LCBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9 IGV4cHJlc3Npb25zLmxlbmd0aCwgc2VsZWN0b3I7IGkgPCBsOyBpKyspIHsKICAg ICAgc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0uc3RyaXAo KSk7CiAgICAgIGguY29uY2F0KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRFbGVtZW50 cyhlbGVtZW50KSk7CiAgICB9CiAgICByZXR1cm4gKGwgPiAxKSA/IGgudW5pcXVl KHJlc3VsdHMpIDogcmVzdWx0czsKICB9Cn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93 c2VyLklFKSB7CiAgT2JqZWN0LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVycywgewog ICAgLy8gSUUgcmV0dXJucyBjb21tZW50IG5vZGVzIG9uIGdldEVsZW1lbnRzQnlU YWdOYW1lKCIqIikuCiAgICAvLyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBjb25jYXQ6 IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5v ZGUgPSBiW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gIiEi KSBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBJ RSBpbXByb3Blcmx5IHNlcmlhbGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlwZSBpbiAo aW5uZXJ8b3V0ZXIpSFRNTC4KICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMpIHsK ICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsr KQogICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5UHJvdG90 eXBlJyk7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0KICB9KTsKfQoKZnVuY3Rp b24gJCQoKSB7CiAgcmV0dXJuIFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1lbnRzKGRv Y3VtZW50LCAkQShhcmd1bWVudHMpKTsKfQp2YXIgRm9ybSA9IHsKICByZXNldDog ZnVuY3Rpb24oZm9ybSkgewogICAgJChmb3JtKS5yZXNldCgpOwogICAgcmV0dXJu IGZvcm07CiAgfSwKCiAgc2VyaWFsaXplRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1l bnRzLCBvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT0gJ29iamVj dCcpIG9wdGlvbnMgPSB7IGhhc2g6ICEhb3B0aW9ucyB9OwogICAgZWxzZSBpZiAo T2JqZWN0LmlzVW5kZWZpbmVkKG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMuaGFzaCA9 IHRydWU7CiAgICB2YXIga2V5LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFsc2UsIHN1 Ym1pdCA9IG9wdGlvbnMuc3VibWl0OwoKICAgIHZhciBkYXRhID0gZWxlbWVudHMu aW5qZWN0KHsgfSwgZnVuY3Rpb24ocmVzdWx0LCBlbGVtZW50KSB7CiAgICAgIGlm ICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgICBr ZXkgPSBlbGVtZW50Lm5hbWU7IHZhbHVlID0gJChlbGVtZW50KS5nZXRWYWx1ZSgp OwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIGVsZW1lbnQudHlwZSAhPSAn ZmlsZScgJiYgKGVsZW1lbnQudHlwZSAhPSAnc3VibWl0JyB8fCAoIXN1Ym1pdHRl ZCAmJgogICAgICAgICAgICBzdWJtaXQgIT09IGZhbHNlICYmICghc3VibWl0IHx8 IGtleSA9PSBzdWJtaXQpICYmIChzdWJtaXR0ZWQgPSB0cnVlKSkpKSB7CiAgICAg ICAgICBpZiAoa2V5IGluIHJlc3VsdCkgewogICAgICAgICAgICAvLyBhIGtleSBp cyBhbHJlYWR5IHByZXNlbnQ7IGNvbnN0cnVjdCBhbiBhcnJheSBvZiB2YWx1ZXMK ICAgICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShyZXN1bHRba2V5XSkpIHJl c3VsdFtrZXldID0gW3Jlc3VsdFtrZXldXTsKICAgICAgICAgICAgcmVzdWx0W2tl eV0ucHVzaCh2YWx1ZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHJlc3Vs dFtrZXldID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBy ZXN1bHQ7CiAgICB9KTsKCiAgICByZXR1cm4gb3B0aW9ucy5oYXNoID8gZGF0YSA6 IE9iamVjdC50b1F1ZXJ5U3RyaW5nKGRhdGEpOwogIH0KfTsKCkZvcm0uTWV0aG9k cyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGZvcm0sIG9wdGlvbnMpIHsKICAg IHJldHVybiBGb3JtLnNlcmlhbGl6ZUVsZW1lbnRzKEZvcm0uZ2V0RWxlbWVudHMo Zm9ybSksIG9wdGlvbnMpOwogIH0sCgogIGdldEVsZW1lbnRzOiBmdW5jdGlvbihm b3JtKSB7CiAgICByZXR1cm4gJEEoJChmb3JtKS5nZXRFbGVtZW50c0J5VGFnTmFt ZSgnKicpKS5pbmplY3QoW10sCiAgICAgIGZ1bmN0aW9uKGVsZW1lbnRzLCBjaGls ZCkgewogICAgICAgIGlmIChGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnNbY2hpbGQu dGFnTmFtZS50b0xvd2VyQ2FzZSgpXSkKICAgICAgICAgIGVsZW1lbnRzLnB1c2go RWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgICAgICByZXR1cm4gZWxlbWVudHM7 CiAgICAgIH0KICAgICk7CiAgfSwKCiAgZ2V0SW5wdXRzOiBmdW5jdGlvbihmb3Jt LCB0eXBlTmFtZSwgbmFtZSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICB2YXIg aW5wdXRzID0gZm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKCiAg ICBpZiAoIXR5cGVOYW1lICYmICFuYW1lKSByZXR1cm4gJEEoaW5wdXRzKS5tYXAo RWxlbWVudC5leHRlbmQpOwoKICAgIGZvciAodmFyIGkgPSAwLCBtYXRjaGluZ0lu cHV0cyA9IFtdLCBsZW5ndGggPSBpbnB1dHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBp KyspIHsKICAgICAgdmFyIGlucHV0ID0gaW5wdXRzW2ldOwogICAgICBpZiAoKHR5 cGVOYW1lICYmIGlucHV0LnR5cGUgIT0gdHlwZU5hbWUpIHx8IChuYW1lICYmIGlu cHV0Lm5hbWUgIT0gbmFtZSkpCiAgICAgICAgY29udGludWU7CiAgICAgIG1hdGNo aW5nSW5wdXRzLnB1c2goRWxlbWVudC5leHRlbmQoaW5wdXQpKTsKICAgIH0KCiAg ICByZXR1cm4gbWF0Y2hpbmdJbnB1dHM7CiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rp b24oZm9ybSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBGb3JtLmdldEVsZW1l bnRzKGZvcm0pLmludm9rZSgnZGlzYWJsZScpOwogICAgcmV0dXJuIGZvcm07CiAg fSwKCiAgZW5hYmxlOiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3JtID0gJChmb3Jt KTsKICAgIEZvcm0uZ2V0RWxlbWVudHMoZm9ybSkuaW52b2tlKCdlbmFibGUnKTsK ICAgIHJldHVybiBmb3JtOwogIH0sCgogIGZpbmRGaXJzdEVsZW1lbnQ6IGZ1bmN0 aW9uKGZvcm0pIHsKICAgIHZhciBlbGVtZW50cyA9ICQoZm9ybSkuZ2V0RWxlbWVu dHMoKS5maW5kQWxsKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuICdo aWRkZW4nICE9IGVsZW1lbnQudHlwZSAmJiAhZWxlbWVudC5kaXNhYmxlZDsKICAg IH0pOwogICAgdmFyIGZpcnN0QnlJbmRleCA9IGVsZW1lbnRzLmZpbmRBbGwoZnVu Y3Rpb24oZWxlbWVudCkgewogICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1 dGUoJ3RhYkluZGV4JykgJiYgZWxlbWVudC50YWJJbmRleCA+PSAwOwogICAgfSku c29ydEJ5KGZ1bmN0aW9uKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQudGFiSW5k ZXggfSkuZmlyc3QoKTsKCiAgICByZXR1cm4gZmlyc3RCeUluZGV4ID8gZmlyc3RC eUluZGV4IDogZWxlbWVudHMuZmluZChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAg IHJldHVybiBbJ2lucHV0JywgJ3NlbGVjdCcsICd0ZXh0YXJlYSddLmluY2x1ZGUo ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpOwogICAgfSk7CiAgfSwKCiAg Zm9jdXNGaXJzdEVsZW1lbnQ6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAk KGZvcm0pOwogICAgZm9ybS5maW5kRmlyc3RFbGVtZW50KCkuYWN0aXZhdGUoKTsK ICAgIHJldHVybiBmb3JtOwogIH0sCgogIHJlcXVlc3Q6IGZ1bmN0aW9uKGZvcm0s IG9wdGlvbnMpIHsKICAgIGZvcm0gPSAkKGZvcm0pLCBvcHRpb25zID0gT2JqZWN0 LmNsb25lKG9wdGlvbnMgfHwgeyB9KTsKCiAgICB2YXIgcGFyYW1zID0gb3B0aW9u cy5wYXJhbWV0ZXJzLCBhY3Rpb24gPSBmb3JtLnJlYWRBdHRyaWJ1dGUoJ2FjdGlv bicpIHx8ICcnOwogICAgaWYgKGFjdGlvbi5ibGFuaygpKSBhY3Rpb24gPSB3aW5k b3cubG9jYXRpb24uaHJlZjsKICAgIG9wdGlvbnMucGFyYW1ldGVycyA9IGZvcm0u c2VyaWFsaXplKHRydWUpOwoKICAgIGlmIChwYXJhbXMpIHsKICAgICAgaWYgKE9i amVjdC5pc1N0cmluZyhwYXJhbXMpKSBwYXJhbXMgPSBwYXJhbXMudG9RdWVyeVBh cmFtcygpOwogICAgICBPYmplY3QuZXh0ZW5kKG9wdGlvbnMucGFyYW1ldGVycywg cGFyYW1zKTsKICAgIH0KCiAgICBpZiAoZm9ybS5oYXNBdHRyaWJ1dGUoJ21ldGhv ZCcpICYmICFvcHRpb25zLm1ldGhvZCkKICAgICAgb3B0aW9ucy5tZXRob2QgPSBm b3JtLm1ldGhvZDsKCiAgICByZXR1cm4gbmV3IEFqYXguUmVxdWVzdChhY3Rpb24s IG9wdGlvbnMpOwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q LwoKRm9ybS5FbGVtZW50ID0gewogIGZvY3VzOiBmdW5jdGlvbihlbGVtZW50KSB7 CiAgICAkKGVsZW1lbnQpLmZvY3VzKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 LAoKICBzZWxlY3Q6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICQoZWxlbWVudCku c2VsZWN0KCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgpGb3JtLkVsZW1l bnQuTWV0aG9kcyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCFlbGVtZW50LmRpc2Fi bGVkICYmIGVsZW1lbnQubmFtZSkgewogICAgICB2YXIgdmFsdWUgPSBlbGVtZW50 LmdldFZhbHVlKCk7CiAgICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHsKICAg ICAgICB2YXIgcGFpciA9IHsgfTsKICAgICAgICBwYWlyW2VsZW1lbnQubmFtZV0g PSB2YWx1ZTsKICAgICAgICByZXR1cm4gT2JqZWN0LnRvUXVlcnlTdHJpbmcocGFp cik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAnJzsKICB9LAoKICBnZXRWYWx1 ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7 CiAgICB2YXIgbWV0aG9kID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7 CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW21ldGhvZF0oZWxl bWVudCk7CiAgfSwKCiAgc2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVl KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBtZXRob2QgPSBl bGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIEZvcm0uRWxlbWVudC5T ZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQsIHZhbHVlKTsKICAgIHJldHVybiBl bGVtZW50OwogIH0sCgogIGNsZWFyOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAk KGVsZW1lbnQpLnZhbHVlID0gJyc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICBwcmVzZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVt ZW50KS52YWx1ZSAhPSAnJzsKICB9LAoKICBhY3RpdmF0ZTogZnVuY3Rpb24oZWxl bWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB0cnkgewogICAg ICBlbGVtZW50LmZvY3VzKCk7CiAgICAgIGlmIChlbGVtZW50LnNlbGVjdCAmJiAo ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2lucHV0JyB8fAogICAg ICAgICAgIVsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddLmluY2x1ZGUoZWxl bWVudC50eXBlKSkpCiAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKICAgIH0gY2F0 Y2ggKGUpIHsgfQogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgZGlzYWJsZTog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICBlbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CiAgICBy ZXR1cm4gZWxlbWVudDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KCnZhciBGaWVsZCA9IEZvcm0uRWxlbWVudDsKdmFyICRGID0gRm9ybS5F bGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KCkZvcm0uRWxlbWVudC5TZXJpYWxpemVycyA9IHsKICBpbnB1dDog ZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIHN3aXRjaCAoZWxlbWVudC50 eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAg ICBjYXNlICdyYWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJp YWxpemVycy5pbnB1dFNlbGVjdG9yKGVsZW1lbnQsIHZhbHVlKTsKICAgICAgZGVm YXVsdDoKICAgICAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzLnRl eHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsKICAgIH0KICB9LAoKICBpbnB1dFNlbGVj dG9yOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgaWYgKE9iamVjdC5p c1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyBlbGVt ZW50LnZhbHVlIDogbnVsbDsKICAgIGVsc2UgZWxlbWVudC5jaGVja2VkID0gISF2 YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUp IHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm4gZWxl bWVudC52YWx1ZTsKICAgIGVsc2UgZWxlbWVudC52YWx1ZSA9IHZhbHVlOwogIH0s CgogIHNlbGVjdDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGlmIChP YmplY3QuaXNVbmRlZmluZWQodmFsdWUpKQogICAgICByZXR1cm4gdGhpc1tlbGVt ZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUnID8KICAgICAgICAnc2VsZWN0T25lJyA6 ICdzZWxlY3RNYW55J10oZWxlbWVudCk7CiAgICBlbHNlIHsKICAgICAgdmFyIG9w dCwgY3VycmVudFZhbHVlLCBzaW5nbGUgPSAhT2JqZWN0LmlzQXJyYXkodmFsdWUp OwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZWxlbWVudC5sZW5ndGg7 IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgIG9wdCA9IGVsZW1lbnQub3B0aW9u c1tpXTsKICAgICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm9wdGlvblZhbHVlKG9w dCk7CiAgICAgICAgaWYgKHNpbmdsZSkgewogICAgICAgICAgaWYgKGN1cnJlbnRW YWx1ZSA9PSB2YWx1ZSkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0cnVl OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAg ICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gdmFsdWUuaW5jbHVkZShjdXJyZW50VmFs dWUpOwogICAgICB9CiAgICB9CiAgfSwKCiAgc2VsZWN0T25lOiBmdW5jdGlvbihl bGVtZW50KSB7CiAgICB2YXIgaW5kZXggPSBlbGVtZW50LnNlbGVjdGVkSW5kZXg7 CiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMub3B0aW9uVmFsdWUoZWxlbWVu dC5vcHRpb25zW2luZGV4XSkgOiBudWxsOwogIH0sCgogIHNlbGVjdE1hbnk6IGZ1 bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZXMsIGxlbmd0aCA9IGVsZW1l bnQubGVuZ3RoOwogICAgaWYgKCFsZW5ndGgpIHJldHVybiBudWxsOwoKICAgIGZv ciAodmFyIGkgPSAwLCB2YWx1ZXMgPSBbXTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAg ICAgIHZhciBvcHQgPSBlbGVtZW50Lm9wdGlvbnNbaV07CiAgICAgIGlmIChvcHQu c2VsZWN0ZWQpIHZhbHVlcy5wdXNoKHRoaXMub3B0aW9uVmFsdWUob3B0KSk7CiAg ICB9CiAgICByZXR1cm4gdmFsdWVzOwogIH0sCgogIG9wdGlvblZhbHVlOiBmdW5j dGlvbihvcHQpIHsKICAgIC8vIGV4dGVuZCBlbGVtZW50IGJlY2F1c2UgaGFzQXR0 cmlidXRlIG1heSBub3QgYmUgbmF0aXZlCiAgICByZXR1cm4gRWxlbWVudC5leHRl bmQob3B0KS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPyBvcHQudmFsdWUgOiBvcHQu dGV4dDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkFi c3RyYWN0LlRpbWVkT2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoUGVyaW9kaWNhbEV4 ZWN1dGVyLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oJHN1cGVyLCBlbGVtZW50 LCBmcmVxdWVuY3ksIGNhbGxiYWNrKSB7CiAgICAkc3VwZXIoY2FsbGJhY2ssIGZy ZXF1ZW5jeSk7CiAgICB0aGlzLmVsZW1lbnQgICA9ICQoZWxlbWVudCk7CiAgICB0 aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICB9LAoKICBleGVjdXRl OiBmdW5jdGlvbigpIHsKICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsK ICAgIGlmIChPYmplY3QuaXNTdHJpbmcodGhpcy5sYXN0VmFsdWUpICYmIE9iamVj dC5pc1N0cmluZyh2YWx1ZSkgPwogICAgICAgIHRoaXMubGFzdFZhbHVlICE9IHZh bHVlIDogU3RyaW5nKHRoaXMubGFzdFZhbHVlKSAhPSBTdHJpbmcodmFsdWUpKSB7 CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7CiAgICAg IHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfQp9KTsKCkZvcm0uRWxl bWVudC5PYnNlcnZlciA9IENsYXNzLmNyZWF0ZShBYnN0cmFjdC5UaW1lZE9ic2Vy dmVyLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEZvcm0u RWxlbWVudC5nZXRWYWx1ZSh0aGlzLmVsZW1lbnQpOwogIH0KfSk7CgpGb3JtLk9i c2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIsIHsK ICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxp emUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwoKLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovCgpBYnN0cmFjdC5FdmVudE9ic2VydmVyID0gQ2xhc3MuY3JlYXRl KHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50LCBjYWxsYmFjaykgewog ICAgdGhpcy5lbGVtZW50ICA9ICQoZWxlbWVudCk7CiAgICB0aGlzLmNhbGxiYWNr ID0gY2FsbGJhY2s7CgogICAgdGhpcy5sYXN0VmFsdWUgPSB0aGlzLmdldFZhbHVl KCk7CiAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9 PSAnZm9ybScpCiAgICAgIHRoaXMucmVnaXN0ZXJGb3JtQ2FsbGJhY2tzKCk7CiAg ICBlbHNlCiAgICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFjayh0aGlzLmVsZW1lbnQp OwogIH0sCgogIG9uRWxlbWVudEV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHZhciB2 YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICAgIGlmICh0aGlzLmxhc3RWYWx1ZSAh PSB2YWx1ZSkgewogICAgICB0aGlzLmNhbGxiYWNrKHRoaXMuZWxlbWVudCwgdmFs dWUpOwogICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlOwogICAgfQogIH0sCgog IHJlZ2lzdGVyRm9ybUNhbGxiYWNrczogZnVuY3Rpb24oKSB7CiAgICBGb3JtLmdl dEVsZW1lbnRzKHRoaXMuZWxlbWVudCkuZWFjaCh0aGlzLnJlZ2lzdGVyQ2FsbGJh Y2ssIHRoaXMpOwogIH0sCgogIHJlZ2lzdGVyQ2FsbGJhY2s6IGZ1bmN0aW9uKGVs ZW1lbnQpIHsKICAgIGlmIChlbGVtZW50LnR5cGUpIHsKICAgICAgc3dpdGNoIChl bGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSkgewogICAgICAgIGNhc2UgJ2NoZWNr Ym94JzoKICAgICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgICBFdmVudC5vYnNl cnZlKGVsZW1lbnQsICdjbGljaycsIHRoaXMub25FbGVtZW50RXZlbnQuYmluZCh0 aGlzKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAg ICAgRXZlbnQub2JzZXJ2ZShlbGVtZW50LCAnY2hhbmdlJywgdGhpcy5vbkVsZW1l bnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAg ICB9CiAgfQp9KTsKCkZvcm0uRWxlbWVudC5FdmVudE9ic2VydmVyID0gQ2xhc3Mu Y3JlYXRlKEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVu Y3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LmdldFZhbHVlKHRoaXMu ZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uRXZlbnRPYnNlcnZlciA9IENsYXNzLmNy ZWF0ZShBYnN0cmFjdC5FdmVudE9ic2VydmVyLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIEZvcm0uc2VyaWFsaXplKHRoaXMuZWxlbWVudCk7 CiAgfQp9KTsKaWYgKCF3aW5kb3cuRXZlbnQpIHZhciBFdmVudCA9IHsgfTsKCk9i amVjdC5leHRlbmQoRXZlbnQsIHsKICBLRVlfQkFDS1NQQUNFOiA4LAogIEtFWV9U QUI6ICAgICAgIDksCiAgS0VZX1JFVFVSTjogICAxMywKICBLRVlfRVNDOiAgICAg IDI3LAogIEtFWV9MRUZUOiAgICAgMzcsCiAgS0VZX1VQOiAgICAgICAzOCwKICBL RVlfUklHSFQ6ICAgIDM5LAogIEtFWV9ET1dOOiAgICAgNDAsCiAgS0VZX0RFTEVU RTogICA0NiwKICBLRVlfSE9NRTogICAgIDM2LAogIEtFWV9FTkQ6ICAgICAgMzUs CiAgS0VZX1BBR0VVUDogICAzMywKICBLRVlfUEFHRURPV046IDM0LAogIEtFWV9J TlNFUlQ6ICAgNDUsCgogIGNhY2hlOiB7IH0sCgogIHJlbGF0ZWRUYXJnZXQ6IGZ1 bmN0aW9uKGV2ZW50KSB7CiAgICB2YXIgZWxlbWVudDsKICAgIHN3aXRjaChldmVu dC50eXBlKSB7CiAgICAgIGNhc2UgJ21vdXNlb3Zlcic6IGVsZW1lbnQgPSBldmVu dC5mcm9tRWxlbWVudDsgYnJlYWs7CiAgICAgIGNhc2UgJ21vdXNlb3V0JzogIGVs ZW1lbnQgPSBldmVudC50b0VsZW1lbnQ7ICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6 IHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIEVsZW1lbnQuZXh0ZW5kKGVs ZW1lbnQpOwogIH0KfSk7CgpFdmVudC5NZXRob2RzID0gKGZ1bmN0aW9uKCkgewog IHZhciBpc0J1dHRvbjsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAg ICB2YXIgYnV0dG9uTWFwID0geyAwOiAxLCAxOiA0LCAyOiAyIH07CiAgICBpc0J1 dHRvbiA9IGZ1bmN0aW9uKGV2ZW50LCBjb2RlKSB7CiAgICAgIHJldHVybiBldmVu dC5idXR0b24gPT0gYnV0dG9uTWFwW2NvZGVdOwogICAgfTsKCiAgfSBlbHNlIGlm IChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIGlzQnV0dG9uID0gZnVu Y3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAg ICAgY2FzZSAwOiByZXR1cm4gZXZlbnQud2hpY2ggPT0gMSAmJiAhZXZlbnQubWV0 YUtleTsKICAgICAgICBjYXNlIDE6IHJldHVybiBldmVudC53aGljaCA9PSAxICYm IGV2ZW50Lm1ldGFLZXk7CiAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOwog ICAgICB9CiAgICB9OwoKICB9IGVsc2UgewogICAgaXNCdXR0b24gPSBmdW5jdGlv bihldmVudCwgY29kZSkgewogICAgICByZXR1cm4gZXZlbnQud2hpY2ggPyAoZXZl bnQud2hpY2ggPT09IGNvZGUgKyAxKSA6IChldmVudC5idXR0b24gPT09IGNvZGUp OwogICAgfTsKICB9CgogIHJldHVybiB7CiAgICBpc0xlZnRDbGljazogICBmdW5j dGlvbihldmVudCkgeyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDApIH0sCiAgICBp c01pZGRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gaXNCdXR0b24o ZXZlbnQsIDEpIH0sCiAgICBpc1JpZ2h0Q2xpY2s6ICBmdW5jdGlvbihldmVudCkg eyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDIpIH0sCgogICAgZWxlbWVudDogZnVu Y3Rpb24oZXZlbnQpIHsKICAgICAgZXZlbnQgPSBFdmVudC5leHRlbmQoZXZlbnQp OwoKICAgICAgdmFyIG5vZGUgICAgICAgICAgPSBldmVudC50YXJnZXQsCiAgICAg ICAgICB0eXBlICAgICAgICAgID0gZXZlbnQudHlwZSwKICAgICAgICAgIGN1cnJl bnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwoKICAgICAgaWYgKGN1cnJl bnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC50YWdOYW1lKSB7CiAgICAgICAgLy8g RmlyZWZveCBzY3Jld3MgdXAgdGhlICJjbGljayIgZXZlbnQgd2hlbiBtb3Zpbmcg YmV0d2VlbiByYWRpbyBidXR0b25zCiAgICAgICAgLy8gdmlhIGFycm93IGtleXMu IEl0IGFsc28gc2NyZXdzIHVwIHRoZSAibG9hZCIgYW5kICJlcnJvciIgZXZlbnRz IG9uIGltYWdlcywKICAgICAgICAvLyByZXBvcnRpbmcgdGhlIGRvY3VtZW50IGFz IHRoZSB0YXJnZXQgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuCiAgICAg ICAgaWYgKHR5cGUgPT09ICdsb2FkJyB8fCB0eXBlID09PSAnZXJyb3InIHx8CiAg ICAgICAgICAodHlwZSA9PT0gJ2NsaWNrJyAmJiBjdXJyZW50VGFyZ2V0LnRhZ05h bWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JwogICAgICAgICAgICAmJiBjdXJy ZW50VGFyZ2V0LnR5cGUgPT09ICdyYWRpbycpKQogICAgICAgICAgICAgIG5vZGUg PSBjdXJyZW50VGFyZ2V0OwogICAgICB9CiAgICAgIGlmIChub2RlLm5vZGVUeXBl ID09IE5vZGUuVEVYVF9OT0RFKSBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAg ICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZSk7CiAgICB9LAoKICAgIGZpbmRF bGVtZW50OiBmdW5jdGlvbihldmVudCwgZXhwcmVzc2lvbikgewogICAgICB2YXIg ZWxlbWVudCA9IEV2ZW50LmVsZW1lbnQoZXZlbnQpOwogICAgICBpZiAoIWV4cHJl c3Npb24pIHJldHVybiBlbGVtZW50OwogICAgICB2YXIgZWxlbWVudHMgPSBbZWxl bWVudF0uY29uY2F0KGVsZW1lbnQuYW5jZXN0b3JzKCkpOwogICAgICByZXR1cm4g U2VsZWN0b3IuZmluZEVsZW1lbnQoZWxlbWVudHMsIGV4cHJlc3Npb24sIDApOwog ICAgfSwKCiAgICBwb2ludGVyOiBmdW5jdGlvbihldmVudCkgewogICAgICB2YXIg ZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKICAgICAgYm9k eSA9IGRvY3VtZW50LmJvZHkgfHwgeyBzY3JvbGxMZWZ0OiAwLCBzY3JvbGxUb3A6 IDAgfTsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdlWCB8fCAo ZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jRWxlbWVudC5zY3JvbGxMZWZ0 IHx8IGJvZHkuc2Nyb2xsTGVmdCkgLQogICAgICAgICAgKGRvY0VsZW1lbnQuY2xp ZW50TGVmdCB8fCAwKSksCiAgICAgICAgeTogZXZlbnQucGFnZVkgfHwgKGV2ZW50 LmNsaWVudFkgKwogICAgICAgICAgKGRvY0VsZW1lbnQuc2Nyb2xsVG9wIHx8IGJv ZHkuc2Nyb2xsVG9wKSAtCiAgICAgICAgICAoZG9jRWxlbWVudC5jbGllbnRUb3Ag fHwgMCkpCiAgICAgIH07CiAgICB9LAoKICAgIHBvaW50ZXJYOiBmdW5jdGlvbihl dmVudCkgeyByZXR1cm4gRXZlbnQucG9pbnRlcihldmVudCkueCB9LAogICAgcG9p bnRlclk6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBFdmVudC5wb2ludGVyKGV2 ZW50KS55IH0sCgogICAgc3RvcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgRXZl bnQuZXh0ZW5kKGV2ZW50KTsKICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGV2ZW50LnN0b3Bw ZWQgPSB0cnVlOwogICAgfQogIH07Cn0pKCk7CgpFdmVudC5leHRlbmQgPSAoZnVu Y3Rpb24oKSB7CiAgdmFyIG1ldGhvZHMgPSBPYmplY3Qua2V5cyhFdmVudC5NZXRo b2RzKS5pbmplY3QoeyB9LCBmdW5jdGlvbihtLCBuYW1lKSB7CiAgICBtW25hbWVd ID0gRXZlbnQuTWV0aG9kc1tuYW1lXS5tZXRob2RpemUoKTsKICAgIHJldHVybiBt OwogIH0pOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAgIE9iamVj dC5leHRlbmQobWV0aG9kcywgewogICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0 aW9uKCkgeyB0aGlzLmNhbmNlbEJ1YmJsZSA9IHRydWUgfSwKICAgICAgcHJldmVu dERlZmF1bHQ6ICBmdW5jdGlvbigpIHsgdGhpcy5yZXR1cm5WYWx1ZSA9IGZhbHNl IH0sCiAgICAgIGluc3BlY3Q6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIltvYmplY3Qg RXZlbnRdIiB9CiAgICB9KTsKCiAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHsK ICAgICAgaWYgKCFldmVudCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoZXZlbnQu X2V4dGVuZGVkQnlQcm90b3R5cGUpIHJldHVybiBldmVudDsKCiAgICAgIGV2ZW50 Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247 CiAgICAgIHZhciBwb2ludGVyID0gRXZlbnQucG9pbnRlcihldmVudCk7CiAgICAg IE9iamVjdC5leHRlbmQoZXZlbnQsIHsKICAgICAgICB0YXJnZXQ6IGV2ZW50LnNy Y0VsZW1lbnQsCiAgICAgICAgcmVsYXRlZFRhcmdldDogRXZlbnQucmVsYXRlZFRh cmdldChldmVudCksCiAgICAgICAgcGFnZVg6ICBwb2ludGVyLngsCiAgICAgICAg cGFnZVk6ICBwb2ludGVyLnkKICAgICAgfSk7CiAgICAgIHJldHVybiBPYmplY3Qu ZXh0ZW5kKGV2ZW50LCBtZXRob2RzKTsKICAgIH07CgogIH0gZWxzZSB7CiAgICBF dmVudC5wcm90b3R5cGUgPSBFdmVudC5wcm90b3R5cGUgfHwgZG9jdW1lbnQuY3Jl YXRlRXZlbnQoIkhUTUxFdmVudHMiKVsnX19wcm90b19fJ107CiAgICBPYmplY3Qu ZXh0ZW5kKEV2ZW50LnByb3RvdHlwZSwgbWV0aG9kcyk7CiAgICByZXR1cm4gUHJv dG90eXBlLks7CiAgfQp9KSgpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgKGZ1bmN0 aW9uKCkgewogIHZhciBjYWNoZSA9IEV2ZW50LmNhY2hlOwoKICBmdW5jdGlvbiBn ZXRFdmVudElEKGVsZW1lbnQpIHsKICAgIGlmIChlbGVtZW50Ll9wcm90b3R5cGVF dmVudElEKSByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRFswXTsKICAg IGFyZ3VtZW50cy5jYWxsZWUuaWQgPSBhcmd1bWVudHMuY2FsbGVlLmlkIHx8IDE7 CiAgICByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRCA9IFsrK2FyZ3Vt ZW50cy5jYWxsZWUuaWRdOwogIH0KCiAgZnVuY3Rpb24gZ2V0RE9NRXZlbnROYW1l KGV2ZW50TmFtZSkgewogICAgaWYgKGV2ZW50TmFtZSAmJiBldmVudE5hbWUuaW5j bHVkZSgnOicpKSByZXR1cm4gImRhdGFhdmFpbGFibGUiOwogICAgcmV0dXJuIGV2 ZW50TmFtZTsKICB9CgogIGZ1bmN0aW9uIGdldENhY2hlRm9ySUQoaWQpIHsKICAg IHJldHVybiBjYWNoZVtpZF0gPSBjYWNoZVtpZF0gfHwgeyB9OwogIH0KCiAgZnVu Y3Rpb24gZ2V0V3JhcHBlcnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFtZSkgewog ICAgdmFyIGMgPSBnZXRDYWNoZUZvcklEKGlkKTsKICAgIHJldHVybiBjW2V2ZW50 TmFtZV0gPSBjW2V2ZW50TmFtZV0gfHwgW107CiAgfQoKICBmdW5jdGlvbiBjcmVh dGVXcmFwcGVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgdmFy IGlkID0gZ2V0RXZlbnRJRChlbGVtZW50KTsKICAgIHZhciBjID0gZ2V0V3JhcHBl cnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFtZSk7CiAgICBpZiAoYy5wbHVjaygi aGFuZGxlciIpLmluY2x1ZGUoaGFuZGxlcikpIHJldHVybiBmYWxzZTsKCiAgICB2 YXIgd3JhcHBlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICghRXZlbnQg fHwgIUV2ZW50LmV4dGVuZCB8fAogICAgICAgIChldmVudC5ldmVudE5hbWUgJiYg ZXZlbnQuZXZlbnROYW1lICE9IGV2ZW50TmFtZSkpCiAgICAgICAgICByZXR1cm4g ZmFsc2U7CgogICAgICBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgICBoYW5kbGVy LmNhbGwoZWxlbWVudCwgZXZlbnQpOwogICAgfTsKCiAgICB3cmFwcGVyLmhhbmRs ZXIgPSBoYW5kbGVyOwogICAgYy5wdXNoKHdyYXBwZXIpOwogICAgcmV0dXJuIHdy YXBwZXI7CiAgfQoKICBmdW5jdGlvbiBmaW5kV3JhcHBlcihpZCwgZXZlbnROYW1l LCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldFdyYXBwZXJzRm9yRXZlbnROYW1l KGlkLCBldmVudE5hbWUpOwogICAgcmV0dXJuIGMuZmluZChmdW5jdGlvbih3cmFw cGVyKSB7IHJldHVybiB3cmFwcGVyLmhhbmRsZXIgPT0gaGFuZGxlciB9KTsKICB9 CgogIGZ1bmN0aW9uIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRs ZXIpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICBpZiAoIWNb ZXZlbnROYW1lXSkgcmV0dXJuIGZhbHNlOwogICAgY1tldmVudE5hbWVdID0gY1tl dmVudE5hbWVdLndpdGhvdXQoZmluZFdyYXBwZXIoaWQsIGV2ZW50TmFtZSwgaGFu ZGxlcikpOwogIH0KCiAgZnVuY3Rpb24gZGVzdHJveUNhY2hlKCkgewogICAgZm9y ICh2YXIgaWQgaW4gY2FjaGUpCiAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBj YWNoZVtpZF0pCiAgICAgICAgY2FjaGVbaWRdW2V2ZW50TmFtZV0gPSBudWxsOwog IH0KCgogIC8vIEludGVybmV0IEV4cGxvcmVyIG5lZWRzIHRvIHJlbW92ZSBldmVu dCBoYW5kbGVycyBvbiBwYWdlIHVubG9hZAogIC8vIGluIG9yZGVyIHRvIGF2b2lk IG1lbW9yeSBsZWFrcy4KICBpZiAod2luZG93LmF0dGFjaEV2ZW50KSB7CiAgICB3 aW5kb3cuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgZGVzdHJveUNhY2hlKTsKICB9 CgogIC8vIFNhZmFyaSBoYXMgYSBkdW1teSBldmVudCBoYW5kbGVyIG9uIHBhZ2Ug dW5sb2FkIHNvIHRoYXQgaXQgd29uJ3QKICAvLyB1c2UgaXRzIGJmY2FjaGUuIFNh ZmFyaSA8PSAzLjEgaGFzIGFuIGlzc3VlIHdpdGggcmVzdG9yaW5nIHRoZSAiZG9j dW1lbnQiCiAgLy8gb2JqZWN0IHdoZW4gcGFnZSBpcyByZXR1cm5lZCB0byB2aWEg dGhlIGJhY2sgYnV0dG9uIHVzaW5nIGl0cyBiZmNhY2hlLgogIGlmIChQcm90b3R5 cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy KCd1bmxvYWQnLCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbiwgZmFsc2UpOwogIH0K CiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50 TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg ICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAg IHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUs IGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoK ICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVs ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAg ICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib24iICsg bmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVtZW50Owog ICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50LCBldmVu dE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBnZXRET01F dmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAmJiBldmVu dE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZl bnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAgIGVsZW1l bnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxlcik7CiAg ICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9IGVsc2Ug aWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRDYWNoZUZv cklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgIGVs ZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0pOwogICAg ICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3JhcHBlciA9 IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAo IXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQucmVt b3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRM aXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAg ICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7 CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhh bmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAgIGZpcmU6 IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAgICBlbGVt ZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQg JiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0Y2hFdmVu dCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoK ICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQp IHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZl bnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxhYmxlIiwg dHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQgPSBkb2N1 bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2ZW50VHlw ZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVudC5ldmVu dE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHsg fTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAgICAgIGVs ZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAg ICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7CiAg ICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgfQog IH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0aG9kcyk7 CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2ZW50LmZp cmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9wT2JzZXJ2 aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVuZChkb2N1 bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5maXJlLm1l dGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9kcy5vYnNl cnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQuTWV0aG9k cy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAgICAgIGZh bHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRoZSBET01D b250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFuIFdlYmIs CiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpvaG4gUmVz aWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRlbnRMb2Fk ZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVybjsKICAg IGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgZG9j dW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9hZGVkID0g dHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAg ICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRpbWVyID0g d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgvbG9h ZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQogICAgICAg ICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsKCiAgICAg IEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50TG9hZGVk RXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250ZW50TG9h ZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRvY3VtZW50 LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRlZmVyIHNy Yz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRMb2FkZWQi KS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRo aXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhpcy5vbnJl YWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50TG9hZGVk RXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2JqZWN0LnRv UXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVtZW50LnRv Z2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50Lk1ldGhv ZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZvcmU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBUb3A6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0b206IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBBZnRlcjog ZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVsZW1lbnQu aW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoKdmFyICRj b250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMgZGVwcmVj YXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hvdWxkIGJl IG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXByZWNhdGVk IG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhlIG5ld2Vy IEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNldCB0byB0 cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5jZSBwcm9i bGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywgb25seSBp ZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBlbGVtZW50 cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVzdCBiZSBj YWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xsb2Zmc2V0 LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBwcmVwYXJl OiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5wYWdlWE9m ZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuc2Ny b2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVsdGFZID0g IHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfHwgZG9j dW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7CiAgfSwK CiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdpdGggb3Zl cmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewogICAgaWYg KHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0aGlzLndp dGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7CiAgICB0 aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhpcy5vZmZz ZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0 dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkgPCAgdGhp cy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAg ICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAgdGhpcy5v ZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3aXRoaW5J bmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4LCB5KSB7 CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVTY3JvbGxP ZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZzZXRjYWNo ZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBvZmZzZXRj YWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50 LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0aGlzLnlj b21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMueWNvbXAg PCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAg ICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAg ICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNl dFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQgZGlyZWN0 bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVudCkgewog ICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2ZXJ0aWNh bCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZz ZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0 SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAgICByZXR1 cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gdGhp cy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgfSwKCiAg Ly8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQgbWV0aG9k cyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVudC5NZXRo b2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6IEVsZW1l bnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXplOiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAgICByZXR1 cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJlbGF0aXZp emU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBhcmUoKTsK ICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAgfSwKCiAg cmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3JvbGxPZmZz ZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBh cmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zmc2V0LAoK ICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpIHsKICAg IG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVtZW50LmNs b25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0KfTsKCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVudC5nZXRF bGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO YW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlvbiBpdGVy KG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDogIltjb250 YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUgKyAiICcp XSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFt ZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1bmN0aW9u KGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xhc3NOYW1l LnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50ZXN0KGNs YXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcnKSA6IGl0 ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQuX2dldEVs ZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtdOwogIH0g OiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNzTmFtZSA9 IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxlbWVudHMg PSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICR3KGNs YXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAhY2xhc3NO YW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChlbGVtZW50 KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1lID0gJyAn ICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBjaGlsZCwg Y247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hpbGQuY2xh c3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcgJykgJiYg KGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNzTmFtZXMg JiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICBy ZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1ZGUoJyAn ICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVsZW1lbnRz LnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJldHVybiBl bGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1lLCBwYXJl bnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8IGRvY3Vt ZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKICB9 Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgpOwpFbGVt ZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6IGZ1bmN0 aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg fSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVsZW1l bnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24obmFtZSkg ewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2VhY2goaXRl cmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7CiAgICB0 aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgogIGFkZDog ZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmluY2x1ZGUo Y2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS5j b25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAgcmVtb3Zl OiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0aGlzLmlu Y2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlzLnNldCgk QSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcgJykpOwog IH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAkQSh0aGlz KS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LkNsYXNz TmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=main.js Content-Type: application/x-javascript; charset=UTF-8; name=main.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/js/main.js Content-Transfer-Encoding: Base64 Ly8gRm9yIHRoZSBuYXZpZ2F0aW9uIGRyb3Bkb3duIG1lbnVzIGFuZCBSZWxhdGVk IENvbnRlbnQgaG92ZXJzOgovLyBzY3JpcHQgdG8gbWFrZSBJRSB0byByZWNvZ25p emUgaG92ZXIgc3RhdGUgb3ZlciBsaXN0IGl0ZW1zCi8vIGJvcnJvd2VkIGZyb20g dGhlICJTdWNrZXJmaXNoIERyb3Bkb3ducyIKLy8gKHd3dy5hbGlzdGFwYXJ0LmNv bS9hcnRpY2xlcy9kcm9wZG93bnMpCnN0YXJ0TGlzdCA9IGZ1bmN0aW9uKCkgewoJ aWYgKGRvY3VtZW50LmFsbCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQpIHsKCQkv LyBmb3IgZHJvcGRvd24gbmF2CgkJaWYgKCQoJ25hdicpKSB7CgkJCW5hdlJvb3Qg PSAkKCduYXYnKTsKCQkJZm9yIChpPTA7IGk8bmF2Um9vdC5jaGlsZE5vZGVzLmxl bmd0aDsgaSsrKSB7CgkJCQlub2RlID0gbmF2Um9vdC5jaGlsZE5vZGVzW2ldOwoJ CQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJCQlub2RlLm9ubW91c2Vv dmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZSs9IiBvdmVyIjsK CQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCkgewoJCQkJCQl0 aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIsICIi KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLy8gZm9yIFJlbGF0ZWQgQ29udGVu dCBob3ZlcnMgYW5kCgkJaWYgKCQoJ3JlbGF0ZWRBcnRpY2xlcycpKSB7CgkJCXJj Um9vdCA9ICQoJ3JlbGF0ZWRBcnRpY2xlcycpOwoJCQlmb3IgKGk9MDsgaTxyY1Jv b3QuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewoJCQkJbm9kZSA9IHJjUm9vdC5j aGlsZE5vZGVzW2ldOwoJCQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJ CQlub2RlLm9ubW91c2VvdmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNz TmFtZSs9IiBvdmVyIjsKCQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0 aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBs YWNlKCIgb3ZlciIsICIiKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLy8gZm9y IENpdGVkIEJ5IGhvdmVycwoJCWlmICgkKCdjaXRlZEJ5JykpIHsKCQkJY2JSb290 ID0gJCgnY2l0ZWRCeScpOwoJCQlmb3IgKGk9MDsgaTxjYlJvb3QuY2hpbGROb2Rl cy5sZW5ndGg7IGkrKykgewoJCQkJbm9kZSA9IGNiUm9vdC5jaGlsZE5vZGVzW2ld OwoJCQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJCQlub2RlLm9ubW91 c2VvdmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZSs9IiBvdmVy IjsKCQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCkgewoJCQkJ CQl0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIs ICIiKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KRXZlbnQub2JzZXJ2ZSh3 aW5kb3csICJsb2FkIiwgc3RhcnRMaXN0KTsKCi8vIFNhbWUgYXMgYWJvdmUsIGJ1 dCBmb3IgdGhlIFJlbGF0ZWQgQ29udGVudCBob3ZlcnMKZnVuY3Rpb24gaWVSZWxh dGVkICgpIHsKaWYgKGRvY3VtZW50LmFsbCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQpIHsKbmF2Um9vdCA9ICQoJ3JlbGF0ZWRBcnRpY2xlcycpOwpmb3IgKGk9MDsg aTxuYXZSb290LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKbm9kZSA9IG5hdlJv b3QuY2hpbGROb2Rlc1tpXTsKaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKbm9k ZS5vbm1vdXNlb3Zlcj1mdW5jdGlvbigpIHsKdGhpcy5jbGFzc05hbWUrPSIgb3Zl ciI7CiAgfQogIG5vZGUub25tb3VzZW91dD1mdW5jdGlvbigpIHsKICB0aGlzLmNs YXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIsICIiKTsKICAg fQogICB9CiAgfQogfQp9CgovLyBGb3IgY2xlYXJpbmcvcmVwb3B1bGF0aW5nIHRo ZSBzZWFyY2ggaW5wdXQgYm94LAovLyBjaXRhdGlvbiBqdW1wIGlucHV0IGJveGVz LCBhbmQgRE9JIGlucHV0IGJveGVzCi8vIEF0eXBvbiB2ZXJzaW9uCmZ1bmN0aW9u IGZsaXBEZWZhdWx0KGZpZWxkKSB7CiAgICBpZiAoIWZpZWxkLmRlZmF1bHRWYWx1 ZSkgZmllbGQuZGVmYXVsdFZhbHVlID0gZmllbGQudmFsdWU7CiAgICBpZiAoZmll bGQudmFsdWUgPT0gZmllbGQuZGVmYXVsdFZhbHVlKSBmaWVsZC52YWx1ZSA9ICIi OwogICAgZWxzZSBpZiAoZmllbGQudmFsdWUgPT0gIiIpIGZpZWxkLnZhbHVlID0g ZmllbGQuZGVmYXVsdFZhbHVlOwp9CgpmdW5jdGlvbiBjaGVja0lucHV0KGFUeXBl KSB7Cgl2YXIgaW5wdXRzID0gKGFUeXBlID09ICdhZHZhbmNlZCcpID8KCQkJCSBb J2FkdlNlYXJjaFRleHQnLCAnYWR2VGl0bGUnLCAnYWR2QXV0aG9yJywgJ2FkdkFi c3RyYWN0JywgJ2FkdkZpZ3VyZSddIDoKCQkJCSBbJ3NlYXJjaFRleHQnXTsKCXZh ciB2YWxpZCA9IGZhbHNlOwoJZm9yICh2YXIgaT0wOyBpPGlucHV0cy5sZW5ndGg7 IGkrKykgewoJCXZhciBpbnB1dCA9ICQoaW5wdXRzW2ldKTsKCQl2YWxpZCB8PSBp bnB1dCAmJgoJCQkJIChpbnB1dC50eXBlID09ICd0ZXh0JykgJiYKCQkJCSAoaW5w dXQudmFsdWUgIT0gJ0VudGVyIFRpdGxlLCBLZXl3b3JkcywgQXV0aG9ycywgb3Ig RE9JJykgJiYKCQkJCSAoaW5wdXQudmFsdWUucmVwbGFjZSgvXlxzK3xccyskL2cs JycpLmxlbmd0aCA+IDApOwoJfQoJaWYgKCEgdmFsaWQpIHsKCQlhbGVydCgiRW50 ZXIgc2VhcmNoIGNyaXRlcmlhLiIpOwoJCXJldHVybiBmYWxzZTsKCX0KCXJldHVy biB0cnVlOwp9CgpmdW5jdGlvbiBzdWJtaXRBZHZTZWFyY2goKSB7CglpZiAoY2hl Y2tJbnB1dCgnYWR2YW5jZWQnKSkgewoJCWRvY3VtZW50LmFkdlNlYXJjaC5zdWJt aXQoKTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKfQoKLy8gRm9y IGNsZWFyaW5nL3JlcG9wdWxhdGluZyB0aGUgc2VhcmNoIGlucHV0IGJveCwKLy8g Y2l0YXRpb24ganVtcCBpbnB1dCBib3hlcywgYW5kIERPSSBpbnB1dCBib3hlcwov L3NvbWUgQXR5cG9uIG5hbWUgY2hhbmdlcy4uCmZ1bmN0aW9uIGV2YWxCb3godGV4 dGJveCkgewogICAgaWYgKHRleHRib3g9PSJzZWFyY2hUZXJtcyIpIHsKCQl0ZXh0 Ym94PWRvY3VtZW50LnNlYXJjaEpvdXJuYWwuc2VhcmNoVGVybXM7CgkJaWYgKHRl eHRib3gudmFsdWU9PSJFbnRlciBUaXRsZSwgS2V5d29yZHMsIEF1dGhvcnMsIG9y IERPSSIpIHRleHRib3gudmFsdWU9IiI7CgkJZWxzZSBpZiAodGV4dGJveC52YWx1 ZT09IiIpIHRleHRib3gudmFsdWU9IkVudGVyIFRpdGxlLCBLZXl3b3JkcywgQXV0 aG9ycywgb3IgRE9JIjsKCX0KCWVsc2UgaWYgKHRleHRib3g9PSJxdWlja0xpbmtW b2x1bWUiKSB7CgkJdGV4dGJveD1kb2N1bWVudC5jaXRhdGlvbkp1bXAucXVpY2tM aW5rVm9sdW1lOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iVm9sICMiKSB0ZXh0Ym94 LnZhbHVlPSIiOwoJCWVsc2UgaWYgKHRleHRib3gudmFsdWU9PSIiKSB0ZXh0Ym94 LnZhbHVlPSJWb2wgIyI7Cgl9CgllbHNlIGlmICh0ZXh0Ym94PT0icXVpY2tMaW5r UGFnZSIpIHsKCQl0ZXh0Ym94PWRvY3VtZW50LmNpdGF0aW9uSnVtcC5xdWlja0xp bmtQYWdlOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iUGFnZSAjIikgdGV4dGJveC52 YWx1ZT0iIjsKCQllbHNlIGlmICh0ZXh0Ym94LnZhbHVlPT0iIikgdGV4dGJveC52 YWx1ZT0iUGFnZSAjIjsKCX0KCWVsc2UgaWYgKHRleHRib3g9PSJkb2kiKSB7CgkJ dGV4dGJveD1kb2N1bWVudC5jaXRhdGlvbkp1bXAuZG9pOwoJCWlmICh0ZXh0Ym94 LnZhbHVlPT0iIikgdGV4dGJveC52YWx1ZT0iMTAuMTAyMS8iOwoJfQoJZWxzZSBp ZiAodGV4dGJveD09InVzZXJOYW1lIikgewoJCXRleHRib3g9ZG9jdW1lbnQuc2ln bkluLnVzZXJOYW1lOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iVXNlcm5hbWUiKSB0 ZXh0Ym94LnZhbHVlPSIiOwoJCWVsc2UgaWYgKHRleHRib3gudmFsdWU9PSIiKSB0 ZXh0Ym94LnZhbHVlPSJVc2VybmFtZSI7Cgl9CgllbHNlIGlmICh0ZXh0Ym94PT0i cGFzc3dvcmQiKSB7CgkJdGV4dGJveD1kb2N1bWVudC5zaWduSW4ucGFzc3dvcmQ7 CgkJaWYgKHRleHRib3gudmFsdWU9PSJQYXNzd29yZCIpIHRleHRib3gudmFsdWU9 IiI7CgkJZWxzZSBpZiAodGV4dGJveC52YWx1ZT09IiIpIHRleHRib3gudmFsdWU9 IlBhc3N3b3JkIjsKCX0KfQoKLy8gYXR5cG9uIGNoYW5nZQpmdW5jdGlvbiBxdWlj a0xpbmtTdWJtaXQoKSB7CiAgICB2YXIgb2sgPSB0cnVlOwogICAgaWYgKGRvY3Vt ZW50LmNpdGF0aW9uSnVtcC5kb2kudmFsdWUgPT0gIjEwLjEwMjEvIikgewogICAg ICAgIGlmIChkb2N1bWVudC5jaXRhdGlvbkp1bXAucXVpY2tMaW5rSm91cm5hbC52 YWx1ZSA9PSAiIikgewogICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgICAg ICBhbGVydCgiUGxlYXNlIHNwZWNpZnkgRE9JIG9yIGEgam91cm5hbCIpOwogICAg ICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuY2l0YXRpb25KdW1wLnF1aWNrTGlua1Zv bHVtZS52YWx1ZSA9PSAiVm9sICMiKSB7CiAgICAgICAgICAgIG9rID0gZmFsc2U7 CiAgICAgICAgICAgIGFsZXJ0KCJQbGVhc2Ugc3BlY2lmeSBET0kgb3Igdm9sdW1l IGFuZCBwYWdlIG51bWJlcnMiKTsKICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50 LmNpdGF0aW9uSnVtcC5xdWlja0xpbmtQYWdlLnZhbHVlID09ICJQYWdlICMiKSB7 CiAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGFsZXJ0KCJQbGVh c2Ugc3BlY2lmeSBET0kgb3Igdm9sdW1lIGFuZCBwYWdlIG51bWJlcnMiKTsKICAg ICAgICB9CiAgICAgICAgaWYgKG9rKQogICAgICAgICAgICBkb2N1bWVudC5jaXRh dGlvbkp1bXAuZG9pLnZhbHVlID0gIiI7CiAgICB9CiAgICBpZiAob2spIHsKLy8g ICAgICAgIGRvY3VtZW50LmZvcm1zWydjaXRhdGlvbkp1bXAnXS5zdWJtaXQoKTsK ICAgIH0KICAgIHJldHVybiBvazsKfQoKLy8gRm9yIHNob3dpbmcvaGlkaW5nIHRo ZSBKb3VybmFsIExpc3QgbWVudSBsYXllcgpmdW5jdGlvbiB0b2dnbGVBWigpIHsK CS8vIGZpcnN0IHRlc3QgZm9yIEV4cGxvcmVyIDYgYW5kIGJlbG93IHRvIGZpeCBh IGJ1ZyBpbiB0aGF0IGNyYXAgYnJvd3NlcgoJdmFyIHZlcnNpb249MDsKCXZhciBu ZWVkZml4PTA7CglpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKCQlpZiAobmF2 aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIpIT0tMSkgewoJCQl2YXIg dGVtcD1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5zcGxpdCgiTVNJRSIpOwoJCQl2YXIg dmVyc2lvbj1wYXJzZUZsb2F0KHRlbXBbMV0pOwoJCX0KCQlpZiAodmVyc2lvbiA8 IDcpIG5lZWRmaXg9MTsKCX0KCgkvLyBzaG93IG9yIGhpZGUgdGhlIFB1YnMgU2Vs ZWN0IGxheWVyCgl2YXIgYm94PSQoJ3B1YnNTZWxlY3RvcicpOwoJdmFyIGJnPSBu ZXcgQXJyYXkoKTsKCWJnWzBdPSQoJ2hlYWRlcicpOwoJYmdbMV09JCgnbWFpbkJv ZHknKTsKCWJnWzJdPSQoJ3BhZ2VGb290ZXItd3JhcCcpOwoJdmFyIG49MDsKCglp ZiAoYm94LnN0eWxlKSB7CgkJaWYgKGJveC5zdHlsZS5kaXNwbGF5IT0nJykgewoJ CQlpZiAobmVlZGZpeD09MSkgcHVic1NlbGVjdElFZml4KCdoaWRlJyk7CgoJCQl3 aGlsZSAoYmdbbl0pIHsKCQkJCWJnW25dLmNoYW5nZU9wYWNpdHk9IjAuNTAiOwoJ CQkJYmdbbl0uc3R5bGUuS0hUTUxPcGFjaXR5PSIwLjUwIjsKCQkJCWJnW25dLnN0 eWxlLm9wYWNpdHk9IjAuNTAiOwoJCQkJbisrOwoJCQl9CgkJCUVmZmVjdC5BcHBl YXIoYm94LCB7ZHVyYXRpb246MC41fSk7CgkJfQoJCWVsc2UgewoJCQlpZiAobmVl ZGZpeD09MSkgcHVic1NlbGVjdElFZml4KCdzaG93Jyk7CgoJCQl3aGlsZSAoYmdb bl0pIHsKCQkJCWJnW25dLnN0eWxlLk1vek9wYWNpdHk9IjEiOwoJCQkJYmdbbl0u c3R5bGUuS0hUTUxPcGFjaXR5PSIxIjsKCQkJCWJnW25dLnN0eWxlLm9wYWNpdHk9 IjEiOwoJCQkJbisrOwoJCQl9CgkJCUVmZmVjdC5GYWRlKGJveCwge2R1cmF0aW9u OjAuNX0pOwoJCX0KCX0KfQovLyBjb21wYW5pb24gc2NyaXB0IHRvIG1ha2UgcHVi c1NlbGVjdCgpIHdvcmsgaW4gRXhwbG9yZXIgNiBhbmQgYmVsb3cKLy8gd2l0aG91 dCBoYXZpbmcgdGhlIGZvcm0gc2VsZWN0IGJveGVzIGFwcGVhciB0aHJvdWdoIHRo ZSBQdWJzIFNlbGVjdCBsYXllcgpmdW5jdGlvbiBwdWJzU2VsZWN0SUVmaXgoaGlk ZU9yU2hvdykgewoJLy8gZm9yIEJyb3dzZSBCeSBJc3N1ZSBib3hlcyBvbiBqb3Vy bmFsLXNwZWNpZmljIHBhZ2VzCglpZiAoJCgnaW5EZWNhZGUnKSkgewoJCXZhciBo aWRlQnJvd3NlMT0kKCdpbkRlY2FkZScpOwoJCXZhciBoaWRlQnJvd3NlMj0kKCdp blZvbHVtZScpOwoJCXZhciBoaWRlQnJvd3NlMz0kKCdpbklzc3VlJyk7CgkJaWYg KGhpZGVPclNob3c9PSJoaWRlIikgewoJCQloaWRlQnJvd3NlMS5zdHlsZS52aXNp YmlsaXR5PSJoaWRkZW4iOwoJCQloaWRlQnJvd3NlMi5zdHlsZS52aXNpYmlsaXR5 PSJoaWRkZW4iOwoJCQloaWRlQnJvd3NlMy5zdHlsZS52aXNpYmlsaXR5PSJoaWRk ZW4iOwoJCX0KCQllbHNlIHsKCQkJaGlkZUJyb3dzZTEuc3R5bGUudmlzaWJpbGl0 eT0idmlzaWJsZSI7CgkJCWhpZGVCcm93c2UyLnN0eWxlLnZpc2liaWxpdHk9InZp c2libGUiOwoJCQloaWRlQnJvd3NlMy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxl IjsKCQl9Cgl9CgkvLyBmb3Igam91cm5hbCBzZWxlY3RvciBvbiBBUlJDIHBhZ2Vz CglpZiAoJCgnYXJyY0pvdXJuYWxJbmZvJykpIHsKCQl2YXIgYXJyYz0kKCdhcnJj Sm91cm5hbEluZm8nKTsKCQlpZiAoaGlkZU9yU2hvdz09ImhpZGUiKSB7CgkJCWFy cmMuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjsKCQl9CgkJZWxzZSBhcnJjLnN0 eWxlLnZpc2liaWxpdHk9InZpc2libGUiOwoJfQoJLy8gZm9yIGFjY291bnQgc2Vs ZWN0b3Igb24gTGliLiBBZG1pbi4gcGFnZXMKCWlmICgkKCdsaWJBY2NvdW50Jykp IHsKCQl2YXIgYWNjb3VudD0kKCdsaWJBY2NvdW50Jyk7CgkJaWYgKGhpZGVPclNo b3c9PSJoaWRlIikgewoJCQlhY2NvdW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRl biI7CgkJfQoJCWVsc2UgYWNjb3VudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxl IjsKCX0KCS8vIGZvciBtb250aC95ZWFyIG5hdmlnYXRpb24gb24gT25saW5lIE5l d3MgQXJjaGl2ZSBhbmQgbmV3c2xldHRlcnMKCWlmICgkKCdtb250aFllYXJOYXYn KSkgewoJCXZhciBhY2NvdW50PSQoJ21vbnRoWWVhck5hdicpOwoJCWlmIChoaWRl T3JTaG93PT0iaGlkZSIpIHsKCQkJYWNjb3VudC5zdHlsZS52aXNpYmlsaXR5PSJo aWRkZW4iOwoJCX0KCQllbHNlIGFjY291bnQuc3R5bGUudmlzaWJpbGl0eT0idmlz aWJsZSI7Cgl9Cn0KCi8vIEFub3RoZXIgcGFpciBvZiBzY3JpcHRzIHRvIGZpeCBJ RSdzIHByb2JsZW0gd2l0aCBzZWxlY3QgYm94ZXMgc2hvd2luZyB0aHJvdWdoIGxh eWVycwovLyBUaGlzIG9uZSBpcyBmb3IgdGhlIEF1dGhvciBJbmRleCBwYWdlCmZ1 bmN0aW9uIGZpeEFJNElFKHN0YXRlKSB7CglpZiAoUHJvdG90eXBlLkJyb3dzZXIu SUUpIHsKCQlpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIp IT0tMSkgewoJCQl2YXIgdGVtcD1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5zcGxpdCgi TVNJRSIpOwoJCQl2YXIgdmVyc2lvbj1wYXJzZUZsb2F0KHRlbXBbMV0pOwoJCX0K CQlpZiAodmVyc2lvbiA8IDcpIHsKCQkJaWYgKCQoJ2FpVm9sSnVtcCcpKSB7CgkJ CQl2YXIgZm9ybT0kKCdhaVZvbEp1bXAnKTsKCQkJCXZhciBzZWxlY3QxPWZvcm0u Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdLnN0eWxlOwoJCQkJdmFy IHNlbGVjdDI9Zm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMV0u c3R5bGU7CgkJCQlpZiAoc3RhdGU9PSJvbiIpIHsKCQkJCQlzZWxlY3QxLnZpc2li aWxpdHk9ImhpZGRlbiI7CgkJCQkJc2VsZWN0Mi52aXNpYmlsaXR5PSJoaWRkZW4i OwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJc2VsZWN0MS52aXNpYmlsaXR5PSJ2aXNp YmxlIjsKCQkJCQlzZWxlY3QyLnZpc2liaWxpdHk9InZpc2libGUiOwoJCQkJfQoJ CQl9CgkJfQoJfQp9Ci8vIFRoaXMgb25lIGlzIG9ubHkgZm9yIHRoZSBPbmxpbmUg TmV3cyBBcmNoaXZlCmZ1bmN0aW9uIGZpeEFyY2hpdmU0SUUoc3RhdGUpIHsKCWlm IChQcm90b3R5cGUuQnJvd3Nlci5JRSkgewoJCWlmIChuYXZpZ2F0b3IuYXBwVmVy c2lvbi5pbmRleE9mKCJNU0lFIikhPS0xKSB7CgkJCXZhciB0ZW1wPW5hdmlnYXRv ci5hcHBWZXJzaW9uLnNwbGl0KCJNU0lFIik7CgkJCXZhciB2ZXJzaW9uPXBhcnNl RmxvYXQodGVtcFsxXSk7CgkJfQoJCWlmICh2ZXJzaW9uIDwgNykgewoJCQlpZiAo JCgnbmV3c0FyY2hpdmVOYXYnKSkgewoJCQkJdmFyIGZvcm09JCgnbmV3c0FyY2hp dmVOYXYnKTsKCQkJCXZhciBzZWxlY3QxPWZvcm0uZ2V0RWxlbWVudHNCeVRhZ05h bWUoJ3NlbGVjdCcpWzBdLnN0eWxlOwoJCQkJdmFyIHNlbGVjdDI9Zm9ybS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMV0uc3R5bGU7CgkJCQlpZiAoc3Rh dGU9PSJvbiIpIHsKCQkJCQlzZWxlY3QxLnZpc2liaWxpdHk9ImhpZGRlbiI7CgkJ CQkJc2VsZWN0Mi52aXNpYmlsaXR5PSJoaWRkZW4iOwoJCQkJfQoJCQkJZWxzZSB7 CgkJCQkJc2VsZWN0MS52aXNpYmlsaXR5PSJ2aXNpYmxlIjsKCQkJCQlzZWxlY3Qy LnZpc2liaWxpdHk9InZpc2libGUiOwoJCQkJfQoJCQl9CgkJfQoJfQp9CgovLyBG b3IgdG9nZ2xpbmcgdGhlIGFydGljbGUgbGlzdHMgb24gdGhlIGpvdXJuYWwgaG9t ZSBwYWdlcwpmdW5jdGlvbiB0b2dnbGVBcnRpY2xlTGlzdChmb2N1cykgewoJdmFy IGZvY3VzTGlzdD1mb2N1cysiQXJ0aWNsZXMiOwoJdmFyIGZvY3VzVGFiPWZvY3Vz KyJUYWIiOwoKCXZhciBsaXN0ID0gbmV3IEFycmF5KCQoJ2p1c3RBY2NlcHRlZEFy dGljbGVzJyksJCgnanVzdFB1Ymxpc2hlZEFydGljbGVzJyksJCgnY3VycmVudElz c3VlQXJ0aWNsZXMnKSwkKCdtb3N0UmVhZEFydGljbGVzJyksJCgnbW9zdENpdGVk QXJ0aWNsZXMnKSk7Cgl2YXIgdGFiID0gbmV3IEFycmF5KCQoJ2p1c3RBY2NlcHRl ZFRhYicpLCQoJ2p1c3RQdWJsaXNoZWRUYWInKSwkKCdjdXJyZW50SXNzdWVUYWIn KSwkKCdtb3N0UmVhZFRhYicpLCQoJ21vc3RDaXRlZFRhYicpKTsKCWZvY3VzTGlz dD0kKGZvY3VzTGlzdCk7Cglmb2N1c1RhYj0kKGZvY3VzVGFiKTsKCgkvLyBmaXJz dCwgaGlkZSBhbGwgbGlzdHMKCWxpc3RbMF0uc3R5bGUuZGlzcGxheT0ibm9uZSI7 CglsaXN0WzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoJbGlzdFsyXS5zdHlsZS5k aXNwbGF5PSJub25lIjsKCWxpc3RbM10uc3R5bGUuZGlzcGxheT0ibm9uZSI7Cgls aXN0WzRdLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoKCS8vIHNlY29uZCwgc2hvdyB0 aGUgb25lIHRoYXQgd2FzIGNsaWNrZWQKCWZvY3VzTGlzdC5zdHlsZS5kaXNwbGF5 PSJibG9jayI7CgoJLy8gdGhpcmQsIHB1dCBhbGwgdGhlIHRhYiBiYWNrZ3JvdW5k cyBpbnRvIHRoZSBuZXV0cmFsIHBvc2l0aW9uOwoJdGFiWzBdLnN0eWxlLmJhY2tn cm91bmRQb3NpdGlvbj0iLTRweCAtNHB4IjsKCXRhYlsxXS5zdHlsZS5iYWNrZ3Jv dW5kUG9zaXRpb249Ii05OXB4IC00cHgiOwoJdGFiWzJdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTE5NHB4IC00cHgiOwoJdGFiWzNdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTI4OXB4IC00cHgiOwoJdGFiWzRdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTM4NHB4IC00cHgiOwoKCS8vIGZvdXJ0aCwgcHV0IHRoZSBm b2N1c2VkIHRhYiBiYWNrZ3JvdW5kIGludG8gdGhlIGFjdGl2ZSBwb3NpdGlvbgoJ aWYgKGZvY3VzPT0ianVzdEFjY2VwdGVkIikgewoJCWZvY3VzVGFiLnN0eWxlLmJh Y2tncm91bmRQb3NpdGlvbj0iLTRweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1 cz09Imp1c3RQdWJsaXNoZWQiKSB7CgkJZm9jdXNUYWIuc3R5bGUuYmFja2dyb3Vu ZFBvc2l0aW9uPSItOTlweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1cz09ImN1 cnJlbnRJc3N1ZSIpIHsKCQlmb2N1c1RhYi5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRp b249Ii0xOTRweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1cz09Im1vc3RSZWFk IikgewoJCWZvY3VzVGFiLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj0iLTI4OXB4 IC0yOXB4IjsKCX0KCWVsc2UgewoJCWZvY3VzVGFiLnN0eWxlLmJhY2tncm91bmRQ b3NpdGlvbj0iLTM4NHB4IC0yOXB4IjsKCX0KCS8vYWRkZWQgYnkgQXR5cG9uCglz ZXRSYW5nZShmb2N1c0xpc3QpOwoJcHJlcGFyZVRodW1iRnJvbVRhYihmb2N1c0xp c3QpOwp9CgovLyBGb3Igc2VsZWN0aW5nL2Rlc2VsZWN0aW5nIGFydGljbGVzCi8v IHBhcmFtIGNoYW5nZWQgYnkgQVR5cG9uCmZ1bmN0aW9uIHNlbGVjdERlc2VsZWN0 KGJveCkgewoJdmFyIGZvcm09Ym94LmZvcm07Cgl2YXIgbj0wOwoJdmFyIGNoZWNr ZWQ9MDsKCXZhciBvbmVPclR3bz1mb3JtLnNlbGVjdEFsbC5sZW5ndGg7CgoJaWYg KGJveC5jaGVja2VkPT10cnVlKSB7CgkJaWYgKGZvcm0uZG9pWzFdKSB7CgkJCXdo aWxlIChmb3JtLmRvaVtuXSkgewoJCQkJZm9ybS5kb2lbbl0uY2hlY2tlZD10cnVl OwoJCQkJbisrOwoJCQl9CgkJCWlmIChvbmVPclR3bz09MikgewoJCQkJZm9ybS5z ZWxlY3RBbGxbMF0uY2hlY2tlZD10cnVlOwoJCQkJZm9ybS5zZWxlY3RBbGxbMV0u Y2hlY2tlZD10cnVlOwoJCQl9CgkJCWVsc2UgewoJCQkJZm9ybS5zZWxlY3RBbGwu Y2hlY2tlZD10cnVlOwoJCQl9CgkJfQoJCWVsc2UgZm9ybS5kb2kuY2hlY2tlZD10 cnVlOwoJfQoJZWxzZSB7CgkJaWYgKGZvcm0uZG9pWzFdKSB7CgkJCXdoaWxlIChm b3JtLmRvaVtuXSkgewoJCQkJZm9ybS5kb2lbbl0uY2hlY2tlZD1mYWxzZTsKCQkJ CW4rKzsKCQkJfQoJCQlpZiAob25lT3JUd289PTIpIHsKCQkJCWZvcm0uc2VsZWN0 QWxsWzBdLmNoZWNrZWQ9ZmFsc2U7CgkJCQlmb3JtLnNlbGVjdEFsbFsxXS5jaGVj a2VkPWZhbHNlOwoJCQl9CgkJCWVsc2UgewoJCQkJZm9ybS5zZWxlY3RBbGwuY2hl Y2tlZD1mYWxzZTsKCQkJfQoJCX0KCQllbHNlIGZvcm0uZG9pLmNoZWNrZWQ9ZmFs c2U7Cgl9Cn0KLy9mdW5jdGlvbiBhZGRlZCBieSBBVHlwb24KZnVuY3Rpb24gc3Vi bWl0QXJ0aWNsZXMoYW5FbGVtZW50LCBhY3Rpb24pIHsKICAgIHZhciBhRm9ybSA9 ICQoYW5FbGVtZW50KS51cCgnZm9ybScpOwogICAgc3VibWl0TXVsdGlBcnRpY2xl cyhhRm9ybSwgYWN0aW9uLCBmYWxzZSk7Cn0KLy8gRm9yIGNoZWNraW5nIGlmIGFs bCBvZiB0aGUgY2hlY2tib3hlcyBhcmUgY2hlY2tlZCBvciBub3QKLy9wYXJhbSBj aGFuZ2UsIEFUeXBvbiBjaGFuZ2UKZnVuY3Rpb24gZXZhbEFsbChib3gpIHsKICAg IHZhciBmb3JtPWJveC5mb3JtOy8vYXR5cG9uIGNoYW5nZQoJdmFyIG1heD1mb3Jt LmRvaS5sZW5ndGg7IC8vIGF0eXBvbiBjaGFuZ2UKCXZhciBvbmVPclR3bz1mb3Jt LnNlbGVjdEFsbC5sZW5ndGg7Cgl2YXIgY2hlY2tlZD0wOwoJZm9yICh2YXIgY291 bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsKCQlpZiAoZXZhbCgiZm9ybS5k b2lbIiArIGNvdW50ICsgIl0uY2hlY2tlZCIpID09IHRydWUpIHsKCQkJY2hlY2tl ZCsrOwoJCX0KCX0KCWlmIChjaGVja2VkPT1tYXgpIHsKCQlpZiAob25lT3JUd289 PTIpIHsKCQkJZm9ybS5zZWxlY3RBbGxbMF0uY2hlY2tlZD10cnVlOwoJCQlmb3Jt LnNlbGVjdEFsbFsxXS5jaGVja2VkPXRydWU7CgkJfQoJCWVsc2UgewoJCQlmb3Jt LnNlbGVjdEFsbC5jaGVja2VkPXRydWU7CgkJfQoJfQoJZWxzZSB7CgkJaWYgKG9u ZU9yVHdvPT0yKSB7CgkJCWZvcm0uc2VsZWN0QWxsWzBdLmNoZWNrZWQ9ZmFsc2U7 CgkJCWZvcm0uc2VsZWN0QWxsWzFdLmNoZWNrZWQ9ZmFsc2U7CgkJfQoJCWVsc2Ug ewoJCQlmb3JtLnNlbGVjdEFsbC5jaGVja2VkPWZhbHNlOwoJCX0KCX0KfQoKLy8g Rm9yIHNob3dpbmcgdGhlIGZpZ3VyZSB0aHVtYm5haWxzCmZ1bmN0aW9uIG9wZW5U cmF5KGZpZywgZG9pKSB7Cgl2YXIgaGFuZGxlMT1maWcucGFyZW50Tm9kZS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnYScpWzBdOwoJdmFyIGhhbmRsZTI9ZmlnLnBhcmVu dE5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVsxXTsKCXZhciB0cmF5SGFu ZGxlPWZpZy5wYXJlbnROb2RlOyAvLy50cmF5SGFuZGxlCgl2YXIgZmlnQm94PXRy YXlIYW5kbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jylb MF07IC8vLmZpZ3VyZUJveAoJdmFyIGZpZ3VyZU5hdj1maWcucGFyZW50Tm9kZS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07IC8vLmZpZ3VyZU5hdgoKICAg IGlmIChoYW5kbGUyLnN0eWxlLmRpc3BsYXk9PSJub25lIikgewogICAgICAgIC8v YXR5cG9uOiBnZXQgaW1hZ2VzCiAgICAgICAgdmFyIGRvaUZpZ3VyZSA9IGdldERv aUZpZ3VyZXMoZG9pKTsKICAgICAgICBpZiAoZG9pRmlndXJlKXsKICAgICAgICAg ICAgdmFyIGltZ1RhZyA9IGZpZ0JveC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2 JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOwogICAgICAgICAg ICB1cGRhdGVGaWdJbWcoZG9pRmlndXJlLCAwLCBpbWdUYWcpOwogICAgICAgICAg ICAvL3NldHVwIG5leHQgYW5kIHByZXYKICAgICAgICAgICAgc2V0dXBOZXh0UHJl dihmaWd1cmVOYXYsIGRvaUZpZ3VyZSwgMCk7CiAgICAgICAgfWVsc2V7CiAgICAg ICAgICAgIGFsZXJ0KCJUaGlzIGFydGljbGUgaGFzIG5vIGltYWdlIikKICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgIH0KCQlFZmZlY3QuQXBwZWFyKGZpZ0JveCwg e2R1cmF0aW9uOiAwLjV9KTsKCQlFZmZlY3QuQXBwZWFyKGZpZ3VyZU5hdiwge2R1 cmF0aW9uOiAwLjV9KTsKCQloYW5kbGUxLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoJ CUVmZmVjdC5BcHBlYXIoaGFuZGxlMiwge2R1cmF0aW9uOiAwLjV9KTsKCQl0cmF5 SGFuZGxlLnN0eWxlLmJhY2tncm91bmQ9IiNlNGUyZTIiOwoKCQlpZiAoZmlnLnBh cmVudE5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsxXSkgewoJCQl2 YXIgd2VvPWZpZy5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu JylbMV07CgkJCUVmZmVjdC5BcHBlYXIod2VvLCB7ZHVyYXRpb246IDAuNX0pOwoJ CX0KCX0KCWVsc2UgewoJCUVmZmVjdC5GYWRlKGZpZ0JveCwge2R1cmF0aW9uOiAw LjV9KTsKCQlFZmZlY3QuRmFkZShmaWd1cmVOYXYsIHtkdXJhdGlvbjogMC41fSk7 CgkJRWZmZWN0LkFwcGVhcihoYW5kbGUxLCB7ZHVyYXRpb246IDAuNX0pOwoJCWhh bmRsZTIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CgkJdHJheUhhbmRsZS5zdHlsZS5i YWNrZ3JvdW5kPSIjZmZmIHVybCgvdGVtcGxhdGVzL2pzcC9fc3R5bGUyL19hY2hz L2ltYWdlcy9oYW5kbGUtYmcuZ2lmKSBuby1yZXBlYXQgYm90dG9tIHJpZ2h0IjsK CgkJaWYgKGZpZy5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu JylbMV0pIHsKCQkJdmFyIHdlbz1maWcucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5 VGFnTmFtZSgnc3BhbicpWzFdOwoJCQlFZmZlY3QuRmFkZSh3ZW8sIHtkdXJhdGlv bjogMC41fSk7CgkJfQoJfQp9CgpmdW5jdGlvbiB1cGRhdGVGaWdJbWcoZG9pRmln dXJlLCBpbmRleCwgaW1nVGFnKSB7CiAgICB2YXIgaXNNZWRpdW0gPSBpbmRleD09 IDAgJiYgZG9pRmlndXJlLmlzVG9jRmlndXJlOwogICAgaW1nVGFnLnNyYyA9IGRv aUZpZ3VyZS5wYXRoICsgJy9pbWFnZXMvJyArIChpc01lZGl1bSA/ICdtZWRpdW0v JyA6ICdzbWFsbC8nKSArIGRvaUZpZ3VyZS5pbWFnZXNbaW5kZXhdOwogICAgJChp bWdUYWcpW2lzTWVkaXVtID8gJ2FkZENsYXNzTmFtZScgOiAncmVtb3ZlQ2xhc3NO YW1lJ10oJ3RvY0dyYXBoaWMnKTsKfQoKLy8gRm9yIHNob3dpbmcgbXVsdGlwbGUg ZmlndXJlIHRodW1ibmFpbHMKLy9wYXJhbSBjaGFuZ2VkIGJ5IEF0eXBvbgpmdW5j dGlvbiBvcGVuTXVsdGlUcmF5cyhidXR0b24pIHsKICAgIGlmICghYnV0dG9uKSBy ZXR1cm47CiAgICB2YXIgZm9ybSA9ICQoYnV0dG9uKS51cCgnZm9ybScpOwogICAg dmFyIGRvaUlucHV0cyA9IGZvcm0uZ2V0SW5wdXRzKCdjaGVja2JveCcsJ2RvaScp OwogICAgdmFyIG1heD1kb2lJbnB1dHMubGVuZ3RoOwoJdmFyIHRyYXksIGhhbmRs ZTEsIGhhbmRsZTIsIHRyYXlIYW5kbGUsIGZpZ0JveCwgbmF2LCBzdGF0ZSwgaW1n LCBkb2ksIGRvaUZpZ3VyZTsKCWJ1dHRvbj1idXR0b24uc3R5bGU7CgogICAgLy9k ZXRlcm1pbmUgc3RhdGUgb2YgdGhlIGJ1dHRvbiAoc2hvdyBhbGwgb3IgaGlkZSBh bGwpCglpZiAoYnV0dG9uLmJhY2tncm91bmRQb3NpdGlvbiAhPSAiMHB4IC0xOHB4 Iikgc3RhdGU9MDsKCWVsc2Ugc3RhdGU9MTsKCgkvL2ZpbmRpbmcgdGhlIHRyYXlz IGJ5IHRhcmdldGluZyB0aGUgYXJ0aWNsZSBjaGVja2JveGVzCglmb3IgKHZhciBj b3VudD0wOyBjb3VudCA8IG1heDsgY291bnQrKykgewoJCS8vZGV0ZXJtaW5lIGlm IHRoZSBhcnRpY2xlIGhhcyB0aHVtYm5haWxzCgkJaWYgKGRvaUlucHV0c1tjb3Vu dF0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh JylbMF0pIHsKCQkJdHJheT1kb2lJbnB1dHNbY291bnRdLnBhcmVudE5vZGUucGFy ZW50Tm9kZTsgLy8uZmlndXJlVHJheS13cmFwCgkJCWhhbmRsZTE9dHJheS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnYScpWzBdOwoJCQloYW5kbGUyPXRyYXkuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2EnKVsxXTsKCQkJdHJheUhhbmRsZT1oYW5kbGUxLnBh cmVudE5vZGU7IC8vLnRyYXlIYW5kbGUKCQkJZmlnQm94PXRyYXlIYW5kbGUucGFy ZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07IC8vLmZpZ3Vy ZUJveAoJCQluYXY9dHJheUhhbmRsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2 JylbMF07Ly8uZmlndXJlTmF2CiAgICAgICAgICAgIC8vYXR5cG9uOiBnZXQgaW1h Z2VzCiAgICAgICAgICAgIGltZyA9ICQoZmlnQm94KS5nZXRFbGVtZW50c0J5VGFn TmFtZSgnZGl2JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOwog ICAgICAgICAgICBkb2k9IGRvaUlucHV0c1tjb3VudF0udmFsdWU7CiAgICAgICAg ICAgIGRvaUZpZ3VyZSA9IGdldERvaUZpZ3VyZXMoZG9pKTsKCiAgICAgICAgICAg IGlmIChkb2lGaWd1cmUpIHsvLyBza2lwIGFydGljbGVzIHdpdGggbm8gaW1hZ2Vz CiAgICAgICAgICAgICAgICBpZiAoc3RhdGU9PTApIHsKICAgICAgICAgICAgICAg ICAgICB1cGRhdGVGaWdJbWcoZG9pRmlndXJlLCAwLCBpbWcpOwogICAgICAgICAg ICAgICAgICAgIHNldHVwTmV4dFByZXYobmF2LCBkb2lGaWd1cmUsIDApOwogICAg ICAgICAgICAgICAgICAgIGZpZ0JveC5zdHlsZS5kaXNwbGF5PSJibG9jayI7CiAg ICAgICAgICAgICAgICAgICAgLy9uYXYncyBkaXNwbGF5IGxhb2dpYyBpcyBoYW5k bGVkIGluIHNldHVwTmV4dFByZXYKLy8gICAgICAgICAgICAgICAgICAgIG5hdi5z dHlsZS5kaXNwbGF5PSJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgaGFuZGxl MS5zdHlsZS5kaXNwbGF5PSJub25lIjsKICAgICAgICAgICAgICAgICAgICBoYW5k bGUyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICB0 cmF5SGFuZGxlLnN0eWxlLmJhY2tncm91bmQ9IiNlNGUyZTIiOwogICAgICAgICAg ICAgICAgICAgIGlmICh0cmF5SGFuZGxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz cGFuJylbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdlbz10cmF5 SGFuZGxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMV07CiAgICAgICAg ICAgICAgICAgICAgICAgIHdlby5zdHlsZS5kaXNwbGF5PSJibG9jayI7CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5iYWNr Z3JvdW5kUG9zaXRpb249IjBweCAtMThweCI7CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmaWdCb3gu c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgbmF2LnN0 eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgICAgICAgICAgICAgIGhhbmRsZTEu c3R5bGUuZGlzcGxheT0iYmxvY2siOwogICAgICAgICAgICAgICAgICAgIGhhbmRs ZTIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgdHJh eUhhbmRsZS5zdHlsZS5iYWNrZ3JvdW5kPSJ1cmwoL3RlbXBsYXRlcy9qc3AvX3N0 eWxlMi9fYWNocy9pbWFnZXMvaGFuZGxlLWJnLmdpZikgbm8tcmVwZWF0IHJpZ2h0 IGJvdHRvbSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRyYXlIYW5kbGUuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsxXSkgewogICAgICAgICAgICAgICAg ICAgICAgICB2YXIgd2VvPXRyYXlIYW5kbGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUo J3NwYW4nKVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgd2VvLnN0eWxlLmRp c3BsYXk9Im5vbmUiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICBidXR0b24uYmFja2dyb3VuZFBvc2l0aW9uPSIwIDAiOwogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKLy8g Rm9yIHRvZ2dsaW5nIHRoZSBKb3VybmFsIFZpZXcgb24gdGhlIFB1YnMgSG9tZSBQ YWdlCmZ1bmN0aW9uIGNoYW5nZVZpZXcoaWQpIHsKCXZhciBzaG93PWlkKyJWaWV3 IjsKCXZhciBoaWdobGlnaHQ9aWQrIkxpbmsiOwoKCXZhciBibG9jazE9JCgnYXpW aWV3Jyk7Cgl2YXIgYmxvY2syPSQoJ2NhdFZpZXcnKTsKCXNob3c9JChzaG93KTsK CXZhciBsaW5rMT0kKCdhekxpbmsnKTsKCXZhciBsaW5rMj0kKCdjYXRMaW5rJyk7 CgloaWdobGlnaHQ9JChoaWdobGlnaHQpOwoKCS8vIGZpcnN0LCBoaWRlIGJvdGgg dmlld3MKCWJsb2NrMS5zdHlsZS5kaXNwbGF5PSJub25lIjsKCWJsb2NrMi5zdHls ZS5kaXNwbGF5PSJub25lIjsKCgkvLyBzZWNvbmQsIHNob3cgdGhlIG9uZSB0aGF0 IHdhcyBjbGlja2VkCglzaG93LnN0eWxlLmRpc3BsYXk9ImJsb2NrIjsKCgkvLyB0 aGlyZCwgc2V0IGJvdGggbGlua3MgdG8gdGhlIGRlZmF1bHQgYXBwZWFyYW5jZQoJ bGluazEuc3R5bGUuZm9udFdlaWdodD0ibm9ybWFsIjsKCWxpbmsxLnN0eWxlLmJh Y2tncm91bmQ9InRyYW5zcGFyZW50IjsKCWxpbmsxLnN0eWxlLmNvbG9yPSIjMzY5 IjsKCWxpbmsxLnN0eWxlLmJvcmRlcj0iMCI7CglsaW5rMi5zdHlsZS5mb250V2Vp Z2h0PSJub3JtYWwiOwoJbGluazIuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJl bnQiOwoJbGluazIuc3R5bGUuY29sb3I9IiMzNjkiOwoJbGluazIuc3R5bGUuYm9y ZGVyPSIwIjsKCgkvLyBmb3VydGgsIGhpZ2hsaWdodCB0aGUgbGluayB0aGF0IHdh cyB1c2VkCgloaWdobGlnaHQuc3R5bGUuZm9udFdlaWdodD0iYm9sZCI7CgloaWdo bGlnaHQuc3R5bGUuYmFja2dyb3VuZD0iI2VlZSI7CgloaWdobGlnaHQuc3R5bGUu Y29sb3I9IiMwMDAiOwoJaGlnaGxpZ2h0LnN0eWxlLmJvcmRlcj0ic29saWQgMXB4 ICNjY2MiOwp9CgovLyBGb3IgZGlzcGxheWluZyBhIGpvdXJuYWwncyBoaXN0b3J5 IGxheWVyIG9uIEpvdXJuYWwgTGlzdApmdW5jdGlvbiBzaG93SGlzdG9yeShqb3Vy bmFsKSB7Cglqb3VybmFsPWpvdXJuYWwucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5 VGFnTmFtZSgndWwnKVswXTsKCWpvdXJuYWw9am91cm5hbC5zdHlsZTsKCglpZiAo am91cm5hbC5kaXNwbGF5IT0iYmxvY2siKSBqb3VybmFsLmRpc3BsYXk9ImJsb2Nr IjsKCWVsc2Ugam91cm5hbC5kaXNwbGF5PSJub25lIjsKfQoKLy8gRm9yIHNob3dp bmcvaGlkaW5nIHRoZSBqb3VybmFscyBpbiBDYXRlZ29yeSBWaWV3IG9uIFB1YnMg SFAKZnVuY3Rpb24gc2hvd0pybmxzKGNhdCkgewoJdmFyIGluZGljYXRvcj1jYXQu Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKCWNhdD1jYXQucGFyZW50 Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndWwnKVswXTsKCWNhdD1jYXQuc3R5 bGU7CgoJaWYgKGNhdC5kaXNwbGF5IT0iYmxvY2siKSB7CgkJY2F0LmRpc3BsYXk9 ImJsb2NrIjsKCQlpbmRpY2F0b3IuaW5uZXJIVE1MPSItIjsKCX0KCWVsc2UgewoJ CWNhdC5kaXNwbGF5PSJub25lIjsKCQlpbmRpY2F0b3IuaW5uZXJIVE1MPSIrIjsK CX0KfQoKCi8vIEFydGljbGUgdGVtcGxhdGUgcHVsbGRvd24gbWVudXMKZnVuY3Rp b24gc2hvd1B1bGxkb3duKGJ1dHRvbikgewoJdmFyIGJsb2NrPWJ1dHRvbi5wYXJl bnROb2RlLnBhcmVudE5vZGU7Cgl2YXIgbGlzdD1idXR0b24ucGFyZW50Tm9kZS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgndWwnKVswXTsKCWlmIChsaXN0LnN0eWxlLmRp c3BsYXkgPT0gIm5vbmUiKSB7CgkJYmxvY2suc3R5bGUuekluZGV4PSI5MDAwIjsK CQlFZmZlY3QuQmxpbmREb3duKGxpc3QsIHtkdXJhdGlvbjowLjN9KTsKCQlidXR0 b24uc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPSIwIC0yMHB4IjsKCX0KCWVsc2Ug ewoJCWJsb2NrLnN0eWxlLnpJbmRleD0iMSI7CgkJRWZmZWN0LkJsaW5kVXAobGlz dCwge2R1cmF0aW9uOjAuM30pOwoJCWJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kUG9z aXRpb249IjAgMCI7Cgl9Cn0KZnVuY3Rpb24gaGlkZVB1bGxkb3duKGxpc3QpIHsK CXZhciBsaXN0PWxpc3QucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUu Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVswXTsKCXNob3dQdWxsZG93bihsaXN0 KTsKfQoKLy8gQXJ0aWNsZSB0ZW1wbGF0ZSByZWZlcmVuY2Ugdmlld2VyCi8vIG5v dGU6IG5lZWRlZCB0byB3ZWVkIG91dCBPcGVyYSBiZWNhdXNlIGl0IGRvZXNuJ3Qg ZGlzcGxheSBwcm9wZXJseQpmdW5jdGlvbiBzaG93UmVmKHJlZiwgaWRzKSB7CiAg ICBpbml0UmVmZXJlbmNlc0JhbG9vbihyZWYsIGlkcyk7ICAgICAvLyBBZGRlZCBi eSBBdHlwb24KCXZhciBicm93c2VyTmFtZT1uYXZpZ2F0b3IuYXBwTmFtZTsKICAg IGlmIChicm93c2VyTmFtZSAhPSAiT3BlcmEiIHx8IC9cZCsvLmV4ZWMobmF2aWdh dG9yLmFwcFZlcnNpb24pWzBdID49IDkpIHsKCQl2YXIgYmFsbG9vbj0kKHJlZiku bmV4dCgpLmRvd24oKTsKICAgICAgICBpZiAoYmFsbG9vbiAmJiBiYWxsb29uLnN0 eWxlKSB7IC8vIEF0eXBvbjogZGVncmFkZSBncmFjZWZ1bGx5IHdoZW4gYmFsb29u IGlzIG5vdCBmb3VuZAogICAgICAgICAgICBpZiAoYmFsbG9vbi5zdHlsZS5kaXNw bGF5ICE9ICJpbmxpbmUiKSB7CiAgICAgICAgICAgICAgICAvLyAgaGlkZVJlZiBp cyBjYWxsaW5nIHNob3dSZWYgLSBuZWVkIHRvIGNoZWNrIGlmIGlzIGRpZmZlcmVu dCBiZWZvcmUgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICB2YXIgaXNEaWZmZXJl bnQgPSAhd2luZG93Lm9wZW5lZFJlZmVyZW5jZUJhbGxvb24gfHwgd2luZG93Lm9w ZW5lZFJlZmVyZW5jZUJhbGxvb24uaW5uZXJIVE1MICE9IGJhbGxvb24uaW5uZXJI VE1MOwogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VC YWxsb29uKSBoaWRlUmVmKHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VCYWxsb29uKTsK ICAgICAgICAgICAgICAgIGlmIChpc0RpZmZlcmVudCkgewogICAgICAgICAgICAg ICAgICAgIGJhbGxvb24uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOwogICAgICAg ICAgICAgICAgICAgIHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VCYWxsb29uID0gYmFs bG9vbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAg ICBlbHNlIHsKICAgICAgICAgICAgICAgIGJhbGxvb24uc3R5bGUuZGlzcGxheT0i bm9uZSI7CiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbmVkUmVmZXJlbmNlQmFs bG9vbiA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsK ICAgICAgICB9CiAgICB9CglwYXJlbnQubG9jYXRpb249IiNyZWZlcmVuY2VzIjsK fQpmdW5jdGlvbiBoaWRlUmVmKHJlZikgewoJcmVmPSQocmVmKS51cCgnLnJlZicp LnByZXZpb3VzKCk7CglzaG93UmVmKHJlZik7Cn0KCi8vIFNpZ24gSW4gUGFnZQpm dW5jdGlvbiBwcmVSZWdNZXNzYWdlKHJlZ2lzdHJhdGlvblBhZ2UpIHsKCXZhciBy PWNvbmZpcm0oIlRvIHJlZ2lzdGVyIG9uIHRoaXMgc2l0ZSwgeW91IG11c3QgY3Jl YXRlIGFuIEFDUyBJRCBvbiB0aGUgQUNTIFNvY2lldHkgd2Vic2l0ZSAod3d3LmFj cy5vcmcpLiBBZnRlciBjb21wbGV0aW5nIHlvdXIgcmVnaXN0cmF0aW9uLCB5b3Ug d2lsbCBiZSByZXR1cm5lZCBiYWNrIHRvIHRoZSBwYWdlIHlvdSB3ZXJlIHZpZXdp bmcgb24gdGhlIEFDUyBQdWJsaWNhdGlvbnMgd2Vic2l0ZSAocHVicy5hY3Mub3Jn KS4iKTsKCQlpZiAocj09dHJ1ZSkgewoJCQlwYXJlbnQubG9jYXRpb249cmVnaXN0 cmF0aW9uUGFnZTsKCQl9CgllbHNlIHsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KCi8v IEFydGljbGUgdGVtcGxhdGUgcGVybWFsaW5rIHZpZXdlcgpmdW5jdGlvbiBzaG93 UGVybWFsaW5rKGRvaSkgewoJZG9pPWRvaS5wYXJlbnROb2RlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdzcGFuJylbMF07CglpZiAoZG9pLnN0eWxlLmRpc3BsYXkgPT0g Im5vbmUiKSB7CgkJRWZmZWN0LkJsaW5kRG93bihkb2ksIHtkdXJhdGlvbjogMC4z fSk7Cgl9CgllbHNlIEVmZmVjdC5CbGluZFVwKGRvaSwge2R1cmF0aW9uOiAwLjN9 KTsKfQpmdW5jdGlvbiBoaWRlUGVybWFsaW5rKGRvaSkgewoJZG9pPWRvaS5wYXJl bnROb2RlLnBhcmVudE5vZGU7CglzaG93UGVybWFsaW5rKGRvaSk7Cn0KCi8vIEFy dGljbGUgdGVtcGxhdGUgZmlndXJlIHZpZXdlcgpmdW5jdGlvbiBzaG93RmlndXJl cyhlKSB7CgkvL2FkZGVkIGJ5IEF0eXBvbgogICAgdmFyIG49MDsKICAgIGlmICgh ZSkJdmFyIGUgPSB3aW5kb3cuZXZlbnQ7CiAgICBpbml0Vmlld2VyKGUpOyAgLyog QXR5cG9uIGNoYW5nZSAqLwoJdmFyIHZpZXdlcj0kKCdmaWd1cmVWaWV3ZXItd3Jh cCcpOwogICAgaWYgKCF2aWV3ZXIpIHJldHVybjsgLy8gSXQgbWF5IHRha2Ugc29t ZSB0aW1lIHRpbGwgZG9jdW1lbnQgZ2V0cyByZWFkeQogICAgaWYgKHZpZXdlci5z dHlsZS5kaXNwbGF5ICE9ICcnKSB7CgkJYmc9IG5ldyBBcnJheSgpOyAvKiBBdHlw b24gY2hhbmdlICovCgkJYmdbMF09JCgnaGVhZGVyJyk7CgkJYmdbMV09JCgnbWFp bkJvZHknKTsKCQliZ1syXT0kKCdwYWdlRm9vdGVyLXdyYXAnKTsKCQl2YXIgcG9z WT0wOwoKCQlpZiAoZS5wYWdlWSkgewoJCQlwb3NZID0gZS5wYWdlWTsKCQl9CgkJ ZWxzZSBpZiAoZS5jbGllbnRZKSB7CgkJCXBvc1kgPSBlLmNsaWVudFkgKyBkb2N1 bWVudC5ib2R5LnNjcm9sbFRvcCArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z Y3JvbGxUb3A7CgkJfQoKCQl3aGlsZSAoYmdbbl0pIHsKCQkJYmdbbl0uc3R5bGUu TW96T3BhY2l0eT0iMC43MCI7CgkJCWJnW25dLnN0eWxlLktIVE1MT3BhY2l0eT0i MC43MCI7CgkJCWJnW25dLnN0eWxlLm9wYWNpdHk9IjAuNzAiOwoJCQluKys7CgkJ fQoJCUVmZmVjdC5BcHBlYXIoJ2ZpZ3VyZVZpZXdlci13cmFwJywge2R1cmF0aW9u OjAuNX0pOwoJCXBvc1k9cG9zWS0xMDA7IC8vIG9mZnNldCBmcm9tIG1vdXNlIHBv c2l0aW9uCgkJdmlld2VyLnN0eWxlLnRvcD1wb3NZKyJweCI7CgkJbmV3IERyYWdn YWJsZSgnZmlndXJlVmlld2VyLXdyYXAnLHtzdGFydGVmZmVjdDogbnVsbCwgZW5k ZWZmZWN0OiBudWxsfSk7Cgl9CgllbHNlIHsKCQl3aGlsZSAoYmdbbl0pIHsKCQkJ Ymdbbl0uc3R5bGUuTW96T3BhY2l0eT0iMSI7CgkJCWJnW25dLnN0eWxlLktIVE1M T3BhY2l0eT0iMSI7CgkJCWJnW25dLnN0eWxlLm9wYWNpdHk9IjEiOwoJCQluKys7 CgkJfQoJCUVmZmVjdC5GYWRlKCdmaWd1cmVWaWV3ZXItd3JhcCcsIHtkdXJhdGlv bjowLjV9KTsKCX0KfQoKCi8vIFNlYXJjaCBQYWdlOiBKb3VybmFsIEZpbHRlciBJ bnRlcmZhY2UgZnVuY3Rpb25zCmZ1bmN0aW9uIHRvZ2dsZWpGaWx0ZXIoKSB7Cgl2 YXIgdGFyZ2V0PSQoJ2pGaWx0ZXJJbnRlcmZhY2UnKTsKCWlmICh0YXJnZXQuc3R5 bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKCQlFZmZlY3QuQXBwZWFyKHRhcmdldCwg e2R1cmF0aW9uOjAuM30pOwoJfQoJZWxzZSB7CgkJRWZmZWN0LkZhZGUodGFyZ2V0 LCB7ZHVyYXRpb246MC4zfSk7Cgl9Cn0KZnVuY3Rpb24gam91cm5hbEZpbHRlcihh Y3Rpb24sIHNraXBUb2dnbGUpIHsKCWlmIChhY3Rpb249PSJjYW5jZWwiKSB7CgkJ dG9nZ2xlakZpbHRlcigpOwoJfQoJZWxzZSB7CgkJdmFyIG1heD1kb2N1bWVudC5h ZHZTZWFyY2gucHVibGljYXRpb24ubGVuZ3RoOwoJCXZhciBjb2Rlbj1uZXcgQXJy YXkoKTsKCQl2YXIgbGlzdD0kKCdzZWxKb3VybmFscycpOwoJCXZhciBjaGVja2Vk PTA7CgkJZm9yICh2YXIgY291bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsK CQkJaWYgKGV2YWwoImRvY3VtZW50LmFkdlNlYXJjaC5wdWJsaWNhdGlvblsiICsg Y291bnQgKyAiXS5jaGVja2VkIikgPT0gdHJ1ZSkgewoJCQkJY29kZW5bY2hlY2tl ZF09ZG9jdW1lbnQuYWR2U2VhcmNoLnB1YmxpY2F0aW9uW2NvdW50XS52YWx1ZTsK CQkJCWNoZWNrZWQrKzsKCQkJfQoJCX0KCQlpZiAoY2hlY2tlZCA9PSAwIHx8IGNo ZWNrZWQ9PW1heCkgewoJCQlsaXN0LmlubmVySFRNTD0iPGxpPkFsbCBBQ1MgSm91 cm5hbHM8L2xpPiI7CiAgICAgICAgICAgIGlmICghc2tpcFRvZ2dsZSkgewogICAg ICAgICAgICAgICAgdG9nZ2xlakZpbHRlcigpOwogICAgICAgICAgICB9CgkJfQoJ CWVsc2UgewoJCQl2YXIgakxpc3Q9IiI7CgkJCXZhciBuPTA7CgkJCXdoaWxlIChj b2RlbltuXSkgewoJCQkJY29kZW5bbl09ZGVjb2RlQ29kZW4oY29kZW5bbl0pOwoJ CQkJakxpc3Q9akxpc3QgKyAiPGxpPiIgKyBjb2RlbltuXSArICI8L2xpPiI7CgkJ CQluKys7CgkJCX0KCQkJbGlzdC5pbm5lckhUTUw9akxpc3Q7CgkJfQoJCW5ldyBF ZmZlY3QuSGlnaGxpZ2h0KGxpc3QsIHtkdXJhdGlvbjogMi41fSk7CiAgICAgICAg aWYgKCFza2lwVG9nZ2xlKSB7CiAgICAgICAgICAgIHRvZ2dsZWpGaWx0ZXIoKTsK ICAgICAgICB9Cgl9Cn0KCmZ1bmN0aW9uIGNoYW5nZUFsbCh0b2dnbGUpIHsKCXZh ciBib3hHcm91cD1kb2N1bWVudC5hZHZTZWFyY2gucHVibGljYXRpb247Cgl1cGRh dGVDaGVja3MoYm94R3JvdXAsdG9nZ2xlKTsKfQoKZnVuY3Rpb24gdXBkYXRlQ2hl Y2tzKGJveEdyb3VwLHRvZ2dsZSkgewoJdmFyIG1heD1ib3hHcm91cC5sZW5ndGg7 CglpZiAodG9nZ2xlPT0ic2VsZWN0IikgewoJCWZvciAodmFyIGNvdW50PTA7IGNv dW50IDwgbWF4OyBjb3VudCsrKSB7CgkJCWJveEdyb3VwW2NvdW50XS5jaGVja2Vk PXRydWU7CgkJfQoJfQoJZWxzZSB7CgkJZm9yICh2YXIgY291bnQ9MDsgY291bnQg PCBtYXg7IGNvdW50KyspIHsKCQkJYm94R3JvdXBbY291bnRdLmNoZWNrZWQ9ZmFs c2U7CgkJfQoJfQp9CgpmdW5jdGlvbiBkZWNvZGVDb2Rlbihjb2RlbikgewoJaWYg KGNvZGVuPT0iYWNocmU0IikgY29kZW49IkFjY291bnRzIG9mIENoZW1pY2FsIFJl c2VhcmNoIjsKCWlmIChjb2Rlbj09ImFhbWljayIpIGNvZGVuPSJBQ1MgQXBwbGll ZCBNYXRlcmlhbCAmYW1wOyBJbnRlcmZhY2VzIjsKCWlmIChjb2Rlbj09ImFjYmNj dCIpIGNvZGVuPSJBQ1MgQ2hlbWljYWwgQmlvbG9neSI7CglpZiAoY29kZW49PSJh bmNhYzMiKSBjb2Rlbj0iQUNTIE5hbm8iOwoJaWYgKGNvZGVuPT0iYW5jaGFtIikg Y29kZW49IkFuYWx5dGljYWwgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09ImJpY2hh dyIpIGNvZGVuPSJCaW9jaGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iYmNjaGVzIikg Y29kZW49IkJpb2Nvbmp1Z2F0ZSBDaGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iYm9t YWY2IikgY29kZW49IkJpb21hY3JvbW9sZWN1bGVzIjsKCWlmIChjb2Rlbj09ImJp cHJldCIpIGNvZGVuPSJCaW90ZWNobm9sb2d5IFByb2dyZXNzIjsKCWlmIChjb2Rl bj09ImNydG9lYyIpIGNvZGVuPSJDaGVtaWNhbCBSZXNlYXJjaCBpbiBUb3hpY29s b2d5IjsKCWlmIChjb2Rlbj09ImNocmVheSIpIGNvZGVuPSJDaGVtaWNhbCBSZXZp ZXdzIjsKCWlmIChjb2Rlbj09ImNtYXRleCIpIGNvZGVuPSJDaGVtaXN0cnkgb2Yg TWF0ZXJpYWxzIjsKCWlmIChjb2Rlbj09ImNnZGVmdSIpIGNvZGVuPSJDcnlzdGFs IEdyb3d0aCAmYW1wOyBEZXNpZ24iOwoJaWYgKGNvZGVuPT0iZW5mdWVtIikgY29k ZW49IkVuZXJneSAmYW1wOyBGdWVscyI7CglpZiAoY29kZW49PSJlc3RoYWciKSBj b2Rlbj0iRW52aXJvbm1lbnRhbCBTY2llbmNlICZhbXA7IFRlY2hub2xvZ3kiOwoJ aWYgKGNvZGVuPT0iaWVjcmVkIikgY29kZW49IkluZHVzdHJpYWwgJmFtcDsgRW5n aW5lZXJpbmcgQ2hlbWlzdHJ5IFJlc2VhcmNoIjsKCWlmIChjb2Rlbj09Imlub2Nh aiIpIGNvZGVuPSJJbm9yZ2FuaWMgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09Imph ZmNhdSIpIGNvZGVuPSJKb3VybmFsIG9mIEFncmljdWx0dXJhbCBhbmQgRm9vZCBD aGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iamFjc2F0IikgY29kZW49IkpvdXJuYWwg b2YgdGhlIEFtZXJpY2FuIENoZW1pY2FsIFNvY2lldHkiOwoJaWYgKGNvZGVuPT0i amNlYWF4IikgY29kZW49IkpvdXJuYWwgb2YgQ2hlbWljYWwgJmFtcDsgRW5naW5l ZXJpbmcgRGF0YSI7CglpZiAoY29kZW49PSJqY2lzZDgiKSBjb2Rlbj0iSm91cm5h bCBvZiBDaGVtaWNhbCBJbmZvcm1hdGlvbiBNb2RlbGluZyI7CglpZiAoY29kZW49 PSJqY3RjZWUiKSBjb2Rlbj0iSm91cm5hbCBvZiBDaGVtaWNhbCBUaGVvcnkgYW5k IENvbXB1dGF0aW9uIjsKCWlmIChjb2Rlbj09ImpjY2hmZiIpIGNvZGVuPSJKb3Vy bmFsIG9mIENvbWJpbmF0b3JpYWwgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09Impt Y21hciIpIGNvZGVuPSJKb3VybmFsIG9mIE1lZGljaW5hbCBDaGVtaXN0cnkiOwoJ aWYgKGNvZGVuPT0iam5wcmRmIikgY29kZW49IkpvdXJuYWwgb2YgTmF0dXJhbCBQ cm9kdWN0cyI7CglpZiAoY29kZW49PSJqb2NlYWgiKSBjb2Rlbj0iSm91cm5hbCBv ZiBPcmdhbmljIENoZW1pc3RyeSI7CglpZiAoY29kZW49PSJqcGNhZmgiKSBjb2Rl bj0iSm91cm5hbCBvZiBQaHlzaWNhbCBDaGVtaXN0cnkgQSI7CglpZiAoY29kZW49 PSJqcGNiZmsiKSBjb2Rlbj0iSm91cm5hbCBvZiBQaHlzaWNhbCBDaGVtaXN0cnkg QiI7CglpZiAoY29kZW49PSJqcGNjY2siKSBjb2Rlbj0iSm91cm5hbCBvZiBQaHlz aWNhbCBDaGVtaXN0cnkgQyI7CglpZiAoY29kZW49PSJqcHJvYnMiKSBjb2Rlbj0i Sm91cm5hbCBvZiBQcm90ZW9tZSBSZXNlYXJjaCI7CglpZiAoY29kZW49PSJsYW5n ZDUiKSBjb2Rlbj0iTGFuZ211aXIiOwoJaWYgKGNvZGVuPT0ibWFtb2J4IikgY29k ZW49Ik1hY3JvbW9sZWN1bGVzIjsKCWlmIChjb2Rlbj09Im1wb2hicCIpIGNvZGVu PSJNb2xlY3VsYXIgUGhhcm1hY2V1dGljcyI7CglpZiAoY29kZW49PSJuYWxlZmQi KSBjb2Rlbj0iTmFubyBMZXR0ZXJzIjsKCWlmIChjb2Rlbj09Im9ybGVmNyIpIGNv ZGVuPSJPcmdhbmljIExldHRlcnMiOwoJaWYgKGNvZGVuPT0ib3ByZGZrIikgY29k ZW49Ik9yZ2FuaWMgUHJvY2VzcyBSZXNlYXJjaCAmYW1wOyBEZXZlbG9wbWVudCI7 CglpZiAoY29kZW49PSJvcmduZDciKSBjb2Rlbj0iT3JnYW5vbWV0YWxsaWNzIjsK CXJldHVybiBjb2RlbjsKfQoKZnVuY3Rpb24gc2F2ZVNlYXJjaChhY3Rpb24pIHsK CXZhciBidXR0b24xPSQoJ3NhdmVpdCcpOwoJdmFyIGJ1dHRvbjI9JCgnZmluYWxp emUnKTsKCXZhciBsaW5rPSQoJ3ZpZXdTYXZlZCcpOwoJdmFyIGxheWVyMT0kKCdz YXZlU2VhcmNoQScpOwoJdmFyIGxheWVyMj0kKCdzYXZlU2VhcmNoQicpOwoJdmFy IGxheWVyMz0kKCdzYXZlU2VhcmNoQycpOwogICAgdmFyIGxheWVyND0kKCdzYXZl U2VhcmNoRCcpOwoJaWYgKGFjdGlvbj09InN0ZXAyIikgewoJCUVmZmVjdC5GYWRl KGJ1dHRvbjEpOwoJCUVmZmVjdC5BcHBlYXIoYnV0dG9uMik7CgkJRWZmZWN0LkZh ZGUobGluayk7CgkJRWZmZWN0LkJsaW5kRG93bihsYXllcjIpOwoJfQoJZWxzZSBp ZiAoYWN0aW9uPT0iY2FuY2VsIikgewoJCUVmZmVjdC5CbGluZFVwKGxheWVyMik7 CgkJRWZmZWN0LkFwcGVhcihidXR0b24xKTsKCQlFZmZlY3QuRmFkZShidXR0b24y KTsKCQlFZmZlY3QuQXBwZWFyKGxpbmspOwoJfQogICAgZWxzZSBpZiAoYWN0aW9u PT0ic2F2aW5nIikgeyAvLyBhdHlwb24gY2hhbmdlCiAgICAgICAgbGF5ZXIxLnN0 eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgIGxheWVyMi5zdHlsZS5kaXNwbGF5 PSJub25lIjsKICAgICAgICBFZmZlY3QuQXBwZWFyKGxheWVyMyk7CiAgICB9CiAg ICBlbHNlIGlmIChhY3Rpb249PSJmaW5hbGl6ZSIpIHsKICAgICAgICBsYXllcjEu c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgbGF5ZXIyLnN0eWxlLmRpc3Bs YXk9Im5vbmUiOwogICAgICAgIGxheWVyMy5zdHlsZS5kaXNwbGF5PSJub25lIjsK ICAgICAgICBFZmZlY3QuQXBwZWFyKGxheWVyNCk7IC8vIGF0eXBvbiBjaGFuZ2UK ICAgIH0KCWVsc2UgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBzaG93U2VhcmNo VGlwcygpIHsKCXZhciB0aXBzPSQoJ3NlYXJjaFRpcHNMYXllcicpOwoJdmFyIGxp bms9JCgnc2VhcmNoVGlwc0xpbmsnKTsKCXZhciBuZWVkZml4PTA7Cgl2YXIgcmVz dWx0cz0kKCdyZXN1bHRzJyk7Cgl2YXIgcHVsbGRvd24xPXJlc3VsdHMuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKCXZhciBwdWxsZG93bjI9cmVzdWx0 cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzFdOwoKCXZhciBicm93c2Vy TmFtZT1uYXZpZ2F0b3IuYXBwTmFtZTsKCWlmIChicm93c2VyTmFtZT09Ik1pY3Jv c29mdCBJbnRlcm5ldCBFeHBsb3JlciIpIHsKCQlpZiAobmF2aWdhdG9yLmFwcFZl cnNpb24uaW5kZXhPZigiTVNJRSIpIT0tMSkgewoJCQl2YXIgdGVtcD1uYXZpZ2F0 b3IuYXBwVmVyc2lvbi5zcGxpdCgiTVNJRSIpOwoJCQl2YXIgdmVyc2lvbj1wYXJz ZUZsb2F0KHRlbXBbMV0pOwoJCX0KCQlpZiAodmVyc2lvbiA8IDcpIG5lZWRmaXg9 MTsKCX0KCgoJaWYgKHRpcHMuc3R5bGUuZGlzcGxheT09Im5vbmUiKSB7CgkJaWYg KG5lZWRmaXg9PTEpIHsKCQkJcHVsbGRvd24xLnN0eWxlLmRpc3BsYXk9Im5vbmUi OwoJCQlwdWxsZG93bjIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CgkJfQoJRWZmZWN0 LkFwcGVhcih0aXBzKTsKCWxpbmsuaW5uZXJIVE1MPSJIaWRlIFNlYXJjaCBUaXBz IjsKCX0KCgllbHNlIHsKCQlpZiAobmVlZGZpeD09MSkgewoJCQlwdWxsZG93bjEu c3R5bGUuZGlzcGxheT0iYmxvY2siOwoJCQlwdWxsZG93bjIuc3R5bGUuZGlzcGxh eT0iYmxvY2siOwoJCX0KCUVmZmVjdC5GYWRlKHRpcHMpOwoJbGluay5pbm5lckhU TUw9IlNob3cgU2VhcmNoIFRpcHMiOwoJfQp9CgpmdW5jdGlvbiBzaG93SXNzdWVz KGxpbmspIHsKICAgICQobGluaykudXAoJ3VsJykudG9nZ2xlQ2xhc3NOYW1lKCdj bG9zZWQnKTsKfQoKLy8gT25saW5lIE5ld3MgQXJjaGl2ZQpmdW5jdGlvbiBzaG93 TW9udGgoYW5jaG9yLG1vbnRoKSB7Cgl2YXIgbW9udGhzID0gbmV3IEFycmF5KCk7 Cgltb250aHNbMF09ImFsbCI7Cgltb250aHNbMV09ImphbiI7Cgltb250aHNbMl09 ImZlYiI7Cgltb250aHNbM109Im1hciI7Cgltb250aHNbNF09ImFwciI7Cgltb250 aHNbNV09Im1heSI7Cgltb250aHNbNl09Imp1biI7Cgltb250aHNbN109Imp1bCI7 Cgltb250aHNbOF09ImF1ZyI7Cgltb250aHNbOV09InNlcCI7Cgltb250aHNbMTBd PSJvY3QiOwoJbW9udGhzWzExXT0ibm92IjsKCW1vbnRoc1sxMl09ImRlYyI7CgoJ Ly8gaGlkZSBhbGwgbGF5ZXJzCglmb3IgKHg9MTsgeDwxMzsgeCsrKSB7CgkJdmFy IGhpZGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9udGhzW3hdKS5zdHlsZTsK CQloaWRlLmRpc3BsYXk9Im5vbmUiOwoJfQoKCS8vIHJlc2V0IGFsbCBhbmNob3Jz Cglmb3IgKHg9MDsgeDwxMzsgeCsrKSB7CgkJdmFyIGNoYW5nZT1hbmNob3IucGFy ZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJylbeF0u c3R5bGU7CgkJY2hhbmdlLmJhY2tncm91bmRDb2xvcj0iI2VlZSI7CgkJY2hhbmdl LmNvbG9yPSIjMzY5IjsKCX0KCgkvLyBzaG93IHRoZSBhcHByb3ByaWF0ZSBsYXll cihzKQoJaWYgKG1vbnRoPT0iYWxsIikgewoJCWZvciAoeD0xOyB4PDEzOyB4Kysp IHsKCQkJdmFyIHNob3c9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9udGhzW3hd KTsKCQkJRWZmZWN0LkFwcGVhcihzaG93KTsKCQl9Cgl9CgllbHNlIHsKCQltb250 aD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb250aCk7CgkJRWZmZWN0LkFwcGVh cihtb250aCk7Cgl9CgkvLyBoaWdobGlnaHQgdGhlIGFwcHJvcHJpYXRlIGFuY2hv cgoJYW5jaG9yLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIzM2OSI7CglhbmNob3Iu c3R5bGUuY29sb3I9IiNmZmYiOwp9CgovLyBFbWFpbCBSZWdpc3RyYXRpb24KZnVu Y3Rpb24gZW5hYmxlUmFkaW8oY2hlY2tib3gsIHJhZGlvMSwgcmFkaW8yKSB7Cglj aGVja2JveD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaGVja2JveCk7CglyYWRp bzE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmFkaW8xKTsKCXJhZGlvMj1kb2N1 bWVudC5nZXRFbGVtZW50QnlJZChyYWRpbzIpOwoJaWYgKGNoZWNrYm94LmNoZWNr ZWQ9PXRydWUpIHsKCQlyYWRpbzEuZGlzYWJsZWQ9ZmFsc2U7CgkJcmFkaW8yLmRp c2FibGVkPWZhbHNlOwoJfQoJZWxzZSB7CgkJcmFkaW8xLmRpc2FibGVkPXRydWU7 CgkJcmFkaW8yLmRpc2FibGVkPXRydWU7Cgl9Cn0KCi8vIEVsZWN0cm9uaWMgR2Fs bGV5IFByb29mCmZ1bmN0aW9uIGVuYWJsZVRleHRhcmVhKHRleHRBcmVhSUQpIHsK CXJhZGlvU2V0PWRvY3VtZW50LnByb29mRm9ybS5yZWFkeVN0YXRlOwoJdGV4dGJv eD0kKHRleHRBcmVhSUQpOwoJZm9yICh2YXIgaT0wOyBpIDwgcmFkaW9TZXQubGVu Z3RoOyBpKyspIHsKCQlpZiAocmFkaW9TZXRbaV0uY2hlY2tlZCkgewoJCQl2YXIg cmFkaW9WYWx1ZSA9IHJhZGlvU2V0W2ldLnZhbHVlOwoJCX0KCX0KCWlmIChyYWRp b1ZhbHVlPT0ibm9idXR0b24iKSB7CgkJdGV4dGJveC5kaXNhYmxlZD1mYWxzZTsK CX0KCWVsc2UgewoJCXRleHRib3guZGlzYWJsZWQ9dHJ1ZTsKCX0KfQoKLy8gUHJv ZmlsZTogU2F2ZWQgU2VhcmNoZXMKZnVuY3Rpb24gdG9nZ2xlQ3JpdGVyaWEoYnV0 dG9uKSB7Cgljcml0ZXJpYT1idXR0b24ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVsxXTsKCWlmIChjcml0ZXJpYS5zdHls ZS5kaXNwbGF5PT0ibm9uZSIpIHsKCQlFZmZlY3QuQmxpbmREb3duKGNyaXRlcmlh KTsKCQlidXR0b24uaW5uZXJIVE1MPSImdWFycjsgSGlkZSBDcml0ZXJpYSI7Cgl9 CgllbHNlIHsKCQlFZmZlY3QuQmxpbmRVcChjcml0ZXJpYSk7CgkJYnV0dG9uLmlu bmVySFRNTD0iJmRhcnI7IFNob3cgQ3JpdGVyaWEiOwoJfQp9CgovKiBBdHlwb24g YWRkZWQgKi8KZnVuY3Rpb24gaW5pdFZpZXdlcihlKSB7CiAgICBpZiAoIXdpbmRv dy5maWd1cmVWaWV3ZXIpIHJldHVybiBmYWxzZTsKCWlmICgkKCdmaWd1cmVWaWV3 ZXItd3JhcCcpICYmICQoJ2ZpZ3VyZVZpZXdlci13cmFwJykuc3R5bGUuZGlzcGxh eSA9PSAnJykgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBmaWd1cmVzID0gd2luZG93 LmZpZ3VyZVZpZXdlci5maWd1cmVzOwoKICAgIC8qIGNsZWFyIHVwIGZpZ3VyZXMg dGhhdCB3ZXJlIG5vdCByZW5kZXJlZCAqLwogICAgZm9yICh2YXIgaSA9IGZpZ3Vy ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICB2YXIgZmlndXJl TWV0YSA9IGZpZ3VyZXNbaV07CiAgICAgICAgaWYgKCFmaWd1cmVNZXRhIHx8ICEk KGZpZ3VyZU1ldGEuaSkpIGZpZ3VyZXMuc3BsaWNlKGksIDEpOwogICAgfQogICAg aWYgKGZpZ3VyZXMubGVuZ3RoID09IDApIHsKICAgICAgICB3aW5kb3cuZmlndXJl Vmlld2VyID0gbnVsbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAg dmFyIGZ2dyA9ICQoJ2ZpZ3VyZVZpZXdlci13cmFwJyk7CiAgICBpZiAoIWZ2dykg ewogICAgICAgIHZhciBjID0gJCgnY29udGFpbmVyJyk7CiAgICAgICAgaWYgKGMp IHsKICAgICAgICAgICAgZnZ3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2 Iik7CiAgICAgICAgICAgIGZ2dy5pZD0nZmlndXJlVmlld2VyLXdyYXAnOwogICAg ICAgICAgICBmdncuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICAgICAgICAgIGMu YXBwZW5kQ2hpbGQoZnZ3KTsKICAgICAgICAgICAgZnZ3LmlubmVySFRNTCA9CiAg ICAgICAgICAgICAgICAnPGRpdiBpZD0iZmlndXJlVmlld2VyIj5cCiAgICAgICAg ICAgICAgICAgICAgPGRpdiBpZD0iZmlndXJlVmlld2VyTmF2Ij5cCiAgICAgICAg ICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJDbG9zZSBGaWd1cmUgVmlld2VyIiBo cmVmPSIjIiBvbmNsaWNrPSJzaG93RmlndXJlcyhldmVudCk7IHJldHVybiBmYWxz ZTsiIGNsYXNzPSJjbG9zZSI+Q2xvc2U8L2E+XAogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJmaWd1cmVOYXYiPlwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxhIGNsYXNzPSJwcmV2IiB0aXRsZT0iUHJldmlvdXMgRmlndXJl IiBocmVmPSIjIiBjbGFzcz0iZGlzYWJsZWQiPjwvYT5cCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8c3Bhbj5GaWd1cmUgPHNwYW4gY2xhc3M9ImluZGV4Ij4x PC9zcGFuPiBvZiAnICsgZmlndXJlcy5sZW5ndGggKyAnPC9zcGFuPlwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJuZXh0IiB0aXRsZT0iTmV4 dCBGaWd1cmUiIGhyZWY9IiMiIGNsYXNzPSJkaXNhYmxlZCI+PC9hPlwKICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAgICAgIDwv ZGl2PlwKICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmaWd1cmVDYW52YXMi PlwKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZmlnVG9vbHMiPlwK ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJmaWdCb3giPlwKICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjYXB0aW9uIj4mbmJzcDtcCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PlwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cCiAgICAgICAgICAgICAgICA8 L2Rpdj5cCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmaWd1cmVWaWV3ZXItZm9v dGVyIj5cCiAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9IiIgc3JjPSIvdGVt cGxhdGVzL2pzcC9fc3R5bGUyL19hY2hzL2ltYWdlcy9maWd1cmVWaWV3ZXItYmcz LmdpZiIvPlwKICAgICAgICAgICAgICAgIDwvZGl2Pic7CiAgICAgICAgICAgIGZ2 dyA9ICQoZnZ3KTsKICAgICAgICB9CiAgICB9CgogICAgdmFyIGluZGV4ID0gMDsK ICAgIHZhciBmaWd1cmVFbGVtZW50ID0gRXZlbnQuZmluZEVsZW1lbnQoZSwgIi5m aWd1cmUiKTsKICAgIGlmIChmaWd1cmVFbGVtZW50ICYmIGZpZ3VyZUVsZW1lbnQu aWQpIHsKICAgICAgICB2YXIgZmlndXJlSWQgPSBmaWd1cmVFbGVtZW50LmlkOwog ICAgICAgIHdoaWxlIChpbmRleCA8IGZpZ3VyZXMubGVuZ3RoICYmIGZpZ3VyZXNb aW5kZXhdLmkgIT0gZmlndXJlSWQpIGluZGV4Kys7CiAgICB9CiAgICBzaG93SW1h Z2UoaW5kZXgpOwp9CgpmdW5jdGlvbiBzaG93SW1hZ2UoaW5kZXgpIHsKICAgIHZh ciBmaWd1cmVzID0gd2luZG93LmZpZ3VyZVZpZXdlci5maWd1cmVzOwogICAgdmFy IGZpZ3VyZU1ldGEgPSBmaWd1cmVzW2luZGV4XTsKICAgIGlmICghZmlndXJlTWV0 YSkgZmlndXJlTWV0YSA9IGZpZ3VyZXNbaW5kZXg9MF07CiAgICB2YXIgZ3JhcGhp Y3MgPSBmaWd1cmVNZXRhLmc7CiAgICB2YXIgZmlndXJlRWxlbWVudCA9ICQoZmln dXJlTWV0YS5pKTsKCiAgICB2YXIgZnZ3ID0gJCgnZmlndXJlVmlld2VyLXdyYXAn KTsKCiAgICAvKiBpbWFnZSBhbmQgY2FwdGlvbiAqLwogICAgdmFyIGh0bWwgPSAi IjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JhcGhpY3MubGVuZ3RoOyBpKysp IHsKICAgICAgICBodG1sICs9ICc8aW1nIGFsdD0iRmlndXJlIiBzcmM9IicgKyB3 aW5kb3cuZmlndXJlVmlld2VyLnBhdGggKyAnL2ltYWdlcy9tZWRpdW0vJyArIGdy YXBoaWNzW2ldLm0gKyAnIi8+JzsKICAgIH0KICAgIGZ2dy5kb3duKCIuZmlnQm94 IikuaW5uZXJIVE1MID0gaHRtbDsKICAgIHZhciBjYXB0aW9uRWxlbWVudCA9IGZp Z3VyZUVsZW1lbnQuZG93bigiLmNhcHRpb24iKTsKICAgIGZ2dy5kb3duKCIuY2Fw dGlvbiIpLmlubmVySFRNTCA9IGNhcHRpb25FbGVtZW50ID8gY2FwdGlvbkVsZW1l bnQuaW5uZXJIVE1MIDogIiI7CgogICAgLyogbmF2aWdhdGlvbiAqLwogICAgdmFy IHBMaW5rID0gZnZ3LmRvd24oJy5wcmV2Jyk7CiAgICBpZiAoaW5kZXggPT0gMCkg ewogICAgICAgIHBMaW5rLmFkZENsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAg ICBwTGluay5ocmVmID0gIiMiCiAgICB9IGVsc2UgewogICAgICAgIHBMaW5rLnJl bW92ZUNsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBwTGluay5ocmVmID0g IkphdmFTY3JpcHQ6c2hvd0ltYWdlKCIgKyAoaW5kZXggLSAxKSArICIpIjsKICAg IH0KCiAgICBpbmRleCsrOwogICAgdmFyIG5MaW5rID0gZnZ3LmRvd24oJy5uZXh0 Jyk7CiAgICBpZiAoaW5kZXggPT0gZmlndXJlcy5sZW5ndGgpIHsKICAgICAgICBu TGluay5hZGRDbGFzc05hbWUoImRpc2FibGVkIik7CiAgICAgICAgbkxpbmsuaHJl ZiA9ICIjIgogICAgfSBlbHNlIHsKICAgICAgICBuTGluay5yZW1vdmVDbGFzc05h bWUoImRpc2FibGVkIik7CiAgICAgICAgbkxpbmsuaHJlZiA9ICJKYXZhU2NyaXB0 OnNob3dJbWFnZSgiICsgaW5kZXggKyAiKSI7CiAgICB9CgogICAgZnZ3LmRvd24o Jy5pbmRleCcpLmlubmVySFRNTCA9IGluZGV4OwoKICAgIC8qIGZpZ3VyZSB0b29s cyAqLwogICAgdmFyIGZ0SHRtbCA9ICcnOwoKICAgIGlmIChmaWd1cmVNZXRhLndl bykgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlndXJlTWV0YS53ZW8u bGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHdlbyA9IGZpZ3VyZU1ldGEu d2VvW2ldOwogICAgICAgICAgICBpZiAod2VvICYmIHdlby5oKSB7CiAgICAgICAg ICAgICAgICBmdEh0bWwgKz0gJzxkaXYgY2xhc3M9IndlbyI+PGEgdGl0bGU9IlZp ZXcgdGhpcyBXZWIgRW5oYW5jZWQgT2JqZWN0JwogICAgICAgICAgICAgICAgaWYg KHdlby50KSB7IGZ0SHRtbCArPSAnOiAnICsgd2VvLnQ7IH0KICAgICAgICAgICAg ICAgIGZ0SHRtbCArPSAnIiBocmVmPSInICsgd2VvLmggKyAnIiB0YXJnZXQ9Il9i bGFuayI+PHNwYW4+V2ViIEVuaGFuY2VkIE9iamVjdDwvc3Bhbj48L2E+PC9kaXY+ JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgaHRtbCA9ICcn OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaGljcy5sZW5ndGg7IGkrKykg ewogICAgICAgIGlmIChncmFwaGljc1tpXS5sKSB7CiAgICAgICAgICAgIGlmICho dG1sKSBodG1sICs9ICc8YnIgLz4nOyAvLyBpcyBub3QgZmlyc3QgbGluawogICAg ICAgICAgICBodG1sICs9ICc8YSBocmVmPSInICsgd2luZG93LmZpZ3VyZVZpZXdl ci5wYXRoICsgJy9pbWFnZXMvbGFyZ2UvJyArIGdyYXBoaWNzW2ldLmwgKyAnIj48 c3Bhbj5IaWdoIFJlc29sdXRpb24gSW1hZ2U8L3NwYW4+PC9hPic7CiAgICAgICAg fQogICAgfQogICAgaWYgKGh0bWwpIGZ0SHRtbCArPSAnPGRpdiBjbGFzcz0iaGln aFJlcyI+JyArIGh0bWwgKyAnPC9kaXY+JzsKCiAgICBmdEh0bWwgKz0gJzxkaXYg Y2xhc3M9InBwdCI+PGEgdGl0bGU9IkRvd25sb2FkIE1TIFBvd2VyUG9pbnQgU2xp ZGUiIGhyZWY9Ii9hY3Rpb24vZG93bmxvYWRGaWd1cmVzP2RvaT0nICsgd2luZG93 LmZpZ3VyZVZpZXdlci5kb2kgKyAnJmlkPScgKyBmaWd1cmVNZXRhLmkgKyAnIj5c CiAgICAgICAgICAgICAgICAgIDxzcGFuPlBvd2VyUG9pbnQgU2xpZGU8L3NwYW4+ XAogICAgICAgICAgICAgICA8L2E+PC9kaXY+JzsKCiAgICBmdncuZG93bignI2Zp Z1Rvb2xzJykuaW5uZXJIVE1MID0gZnRIdG1sOwp9CgpmdW5jdGlvbiByZXF1ZXN0 RmlndXJlcyh1cmwpIHsKICAgIHJlcXVlc3RGaWd1cmVzKCcvYWN0aW9uL3Nob3dG dWxsUG9wdXA/aWQ9ZmlndXJlSW5mbyZkb2k9MTAuMTAyMS9hYzA2MDEyMGEnKTsK ICAgIHNob3dMb2FkaW5nKCk7CgogICAgbmV3IEFqYXguUmVxdWVzdCh1cmwsIHsK ICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uKHRyYW5zcG9ydCkgewogICAgICAg ICAgICBhbGVydCh0cmFuc3BvcnQucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAg ZGlzcGxheUZpZ3VyZUJyb3dzZXIoKTsKICAgICAgICB9CiAgICB9KTsKfQoKZnVu Y3Rpb24gc2hvd0xvYWRpbmcoKSB7CiAgICBhbGVydCgiTG9hZGluZyIpOwp9Cgpm dW5jdGlvbiBkaXNwbGF5RmlndXJlQnJvd3NlcigpIHsKICAgIGFsZXJ0KCJMb2Fk ZWQiKTsKfQpmdW5jdGlvbiBwb3BSZWYyKGlkcykgewoKfQoKZnVuY3Rpb24gaW5p dFJlZmVyZW5jZXNCYWxvb24obGluaywgaWRzKSB7CiAgICBpZiAoIWlkcykgcmV0 dXJuOwogICAgbGluayA9ICQobGluayk7CiAgICB2YXIgYnYgPSBsaW5rLm5leHQo KTsKICAgIGlmICghYnYgfHwgYnYudGFnTmFtZS50b0xvd2VyQ2FzZSgpIT0gJ3Nw YW4nIHx8IGJ2LmNsYXNzTmFtZSE9J3JlZicpIHsKICAgICAgICBpZiAodHlwZW9m IGlkcyA9PSAic3RyaW5nIikgaWRzID0gaWRzLnNwbGl0KCcgJyk7CiAgICAgICAg dmFyIGNvbnRlbnQgPSAiIjsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlk cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgcmVmTGFiZWwgPSAkKGlk c1tpXSkuZG93bignLnJlZkxhYmVsJyk7CiAgICAgICAgICAgIGlmIChyZWZMYWJl bCAmJiBpZHMubGVuZ3RoID09IDEpewogICAgICAgICAgICAgICAgLy9yZW1vdmUg bGFiZWwgb25seSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KICAgICAgICAgICAgICAg IHZhciBsYWJlbCA9IHJlZkxhYmVsLmlubmVySFRNTDsKICAgICAgICAgICAgICAg IHJlZkxhYmVsLmlubmVySFRNTD0iIjsKICAgICAgICAgICAgICAgIGNvbnRlbnQg Kz0gJzxzcGFuPicgKyAkKGlkc1tpXSkuaW5uZXJIVE1MICsgIjwvc3Bhbj4iOwog ICAgICAgICAgICAgICAgLy9pbnNlcnQgaXQgYmFjayBhZnRlciBkaXNwbGF5IGlu Y2FzZSB0aGUgc2FtZSByZWZlcmVuY2UgaXMgdXNlZCB3aXRoIGFub3RoZXIgb25l IChtdWx0aXBsZSByZWZlcmVuY2VzIHNob3VsZCBkaXNwbGF5IGxhYmVscykKICAg ICAgICAgICAgICAgIHJlZkxhYmVsLmlubmVySFRNTD1sYWJlbDsKICAgICAgICAg ICAgfWVsc2V7CiAgICAgICAgICAgICAgICBjb250ZW50ICs9ICc8c3Bhbj4nICsg JChpZHNbaV0pLmlubmVySFRNTCArICI8L3NwYW4+IjsKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgICAgICBsaW5rLmluc2VydCh7YWZ0ZXI6ICc8c3BhbiBjbGFz cz0icmVmIj48c3BhbiBjbGFzcz0iYmFsbG9vbi13cmFwIj48c3BhbiBjbGFzcz0i YmFsbG9vbiI+PGEgdGl0bGU9IkhpZGUgUmVmZXJlbmNlIEluZm9ybWF0aW9uIiBv bmNsaWNrPSJoaWRlUmVmKHRoaXMpOyByZXR1cm4gZmFsc2U7IiBocmVmPSJKYXZh U2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0iY2xvc2UiPjwvYT4nICsgY29udGVudCAr ICc8YSBjbGFzcz0icmVmTGluayIgdGl0bGU9IlZpZXcgUmVmZXJlbmNlcyIgb25j bGljaz0iaGlkZVJlZih0aGlzKTsiIGhyZWY9IiNyZWZlcmVuY2VzIj5WaWV3IEZ1 bGwgUmVmZXJlbmNlIExpc3Q8L2E+PC9zcGFuPjwvc3Bhbj48L3NwYW4+J30pOwog ICAgfQp9Ci8vYXR5cG9uIG1ldGhvZApmdW5jdGlvbiBzZXR1cE5leHRQcmV2KGZp Z3VyZU5hdiwgZG9pRmlndXJlLCBpbmRleCl7CiAgICB2YXIgY3VycmVudEltYWdl cyA9IGRvaUZpZ3VyZS5pbWFnZXM7CiAgICB2YXIgc2l6ZSA9IGN1cnJlbnRJbWFn ZXMubGVuZ3RoOwogICAgaWYgKHNpemU9PTEpewogICAgICAgICQoZmlndXJlTmF2 KS5hZGRDbGFzc05hbWUoImRpc2FibGVkIik7Ly9ieSBkZWZhdWx0CiAgICAgICAg ZmlndXJlTmF2LnN0eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgIHJldHVybjsK ICAgIH07CiAgICBmaWd1cmVOYXYuc3R5bGUuZGlzcGxheT0iYmxvY2siOwogICAg dmFyIGRvaSA9IGRvaUZpZ3VyZS5kb2k7CiAgICB2YXIgbkxpbmsgPSAkKGZpZ3Vy ZU5hdikuZG93bignLm5leHQnKTsKICAgIHZhciBwcmV2TGluayA9ICQoZmlndXJl TmF2KS5kb3duKCcucHJldicpOwogICAgaWYgKGluZGV4ID09IHNpemUtMSl7Ly9p bmRleCBpcyBsYXN0LCBkaXNhYmxlIG5leHQgYW5kIHNldCBwcmV2aW91cwogICAg ICAgIG5MaW5rLmFkZENsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBwcmV2 TGluay5yZW1vdmVDbGFzc05hbWUoImRpc2FibGVkIik7CiAgICAgICAgcHJldkxp bmsuc3RvcE9ic2VydmluZygnY2xpY2snLHByZXZFdmVudCk7CiAgICAgICAgdmFy IHByZXZFdmVudCA9IGZ1bmN0aW9uKGUpe2NoYW5nZUltYWdlKHRoaXMsaW5kZXgt MSxkb2kpOyBFdmVudC5zdG9wKGUpfQogICAgICAgIHByZXZMaW5rLm9ic2VydmUo J2NsaWNrJywgcHJldkV2ZW50KTsKICAgIH1lbHNlIGlmKGluZGV4ID09IDApeyAv L2luZGV4IGlzIGZpcnN0LCBkaXNhYmxlIHByZXYgYW5kIHNldCBuZXh0CiAgICAg ICAgcHJldkxpbmsuYWRkQ2xhc3NOYW1lKCJkaXNhYmxlZCIpOwogICAgICAgIG5M aW5rLnJlbW92ZUNsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBuTGluay5z dG9wT2JzZXJ2aW5nKCdjbGljaycsbmV4dEV2ZW50KTsKICAgICAgICB2YXIgbmV4 dEV2ZW50ID0gZnVuY3Rpb24oZSl7Y2hhbmdlSW1hZ2UodGhpcyxpbmRleCsxLGRv aSk7IEV2ZW50LnN0b3AoZSl9OwogICAgICAgIG5MaW5rLm9ic2VydmUoJ2NsaWNr JywgbmV4dEV2ZW50KQogICAgfWVsc2V7CiAgICAgICAgcHJldkxpbmsucmVtb3Zl Q2xhc3NOYW1lKCJkaXNhYmxlZCIpOwogICAgICAgIHByZXZMaW5rLnN0b3BPYnNl cnZpbmcoJ2NsaWNrJyxwcmV2RXZlbnQpOwogICAgICAgIHZhciBwcmV2RXZlbnQg PSBmdW5jdGlvbihlKXtjaGFuZ2VJbWFnZSh0aGlzLGluZGV4LTEsZG9pKTsgRXZl bnQuc3RvcChlKX07CiAgICAgICAgcHJldkxpbmsub2JzZXJ2ZSgnY2xpY2snLHBy ZXZFdmVudCkKICAgICAgICBuTGluay5yZW1vdmVDbGFzc05hbWUoImRpc2FibGVk Iik7CiAgICAgICAgbkxpbmsuc3RvcE9ic2VydmluZygnY2xpY2snLG5leHRFdmVu dCk7CiAgICAgICAgdmFyIG5leHRFdmVudCA9IGZ1bmN0aW9uKGUpe2NoYW5nZUlt YWdlKHRoaXMsaW5kZXgrMSxkb2kpOyBFdmVudC5zdG9wKGUpfTsKICAgICAgICBu TGluay5vYnNlcnZlKCdjbGljaycsbmV4dEV2ZW50KTsKICAgICB9CiAgICBmaWd1 cmVOYXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXS5pbm5lckhUTUw9 J0ZpZ3VyZSAnICsgZXZhbChpbmRleCsxKSArICcgb2YgJyArIHNpemU7Cn0KCmZ1 bmN0aW9uIGNoYW5nZUltYWdlKG5hdkxpbmssIGluZGV4LCBkb2kpewogICAgdmFy IGZpZ3VyZVRyYXkgPSBuYXZMaW5rLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJl bnROb2RlOwogICAgdmFyIGltZ1RhZyA9ICQoZmlndXJlVHJheSkuZG93bignLmFy dGljbGVGaWd1cmUnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF07CiAg ICB2YXIgZG9pRmlndXJlID0gZ2V0RG9pRmlndXJlcyhkb2kpOwogICAgaWYgKCFk b2lGaWd1cmUpIHJldHVybjsKCWltZ1RhZy5zdHlsZS5ib3JkZXI9IjAiOwoJaW1n VGFnLnNyYz0iL3RlbXBsYXRlcy9qc3AvX3N0eWxlMi9fYWNocy9pbWFnZXMvbG9h ZGluZy5naWYiOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt1cGRhdGVGaWdJ bWcoZG9pRmlndXJlLCBpbmRleCwgaW1nVGFnKTsgaW1nVGFnLnN0eWxlLmJvcmRl cj0iMXB4IHNvbGlkICNjY2MiOyB9LCA1MDApOwogICAgdmFyIGZpZ3VyZU5hdiA9 ICQoaW1nVGFnKS51cCgnLmZpZ3VyZVRyYXknKS5kb3duKCcuZmlndXJlTmF2Jyk7 CiAgICBzZXR1cE5leHRQcmV2KGZpZ3VyZU5hdiwgZG9pRmlndXJlLCBpbmRleCk7 Cn0KZnVuY3Rpb24gZ2V0RG9pSW5kZXgoZG9pKXsKICAgIHZhciBmaWd1cmVzID0g d2luZG93LmZpZ3VyZVZpZXdlcjsKICAgIGlmICghZmlndXJlcykgcmV0dXJuIC0x OwogICAgdmFyIG1heCA9IGZpZ3VyZXMubGVuZ3RoOwogICAgZm9yICh2YXIgY291 bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsKICAgICAgICBpZiAoZmlndXJl c1tjb3VudF0uZG9pID09IGRvaSl7CiAgICAgICAgICAgcmV0dXJuIGNvdW50Owog ICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsKfQpmdW5jdGlvbiBnZXREb2lG aWd1cmVzKGRvaSl7CiAgICB2YXIgZG9pRmlndXJlOwogICAgdmFyIGZpZ3VyZXMg PSB3aW5kb3cuZmlndXJlVmlld2VyOwogICAgaWYgKCFmaWd1cmVzKSByZXR1cm47 CiAgICB2YXIgbWF4ID0gZmlndXJlcy5sZW5ndGg7CiAgICBmb3IgKHZhciBjb3Vu dD0wOyBjb3VudCA8IG1heDsgY291bnQrKykgewogICAgICAgIGlmIChmaWd1cmVz W2NvdW50XS5kb2kgPT0gZG9pKXsKICAgICAgICAgICByZXR1cm4gZG9pRmlndXJl PWZpZ3VyZXNbY291bnRdOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gYWRk RmlndXJlKGRvaSwgcGF0aCwgaW1hZ2VzLCBpc1RvY0ZpZ3VyZSl7CiAgICB2YXIg ZmlndXJlVmlld2VyID0gd2luZG93LmZpZ3VyZVZpZXdlcjsKICAgIHZhciBmaWd1 cmUgPSB7ZG9pOmRvaSxwYXRoOnBhdGgsaW1hZ2VzOltpbWFnZXNdfTsKICAgIGlm IChpc1RvY0ZpZ3VyZSkgZmlndXJlLmlzVG9jRmlndXJlID0gdHJ1ZTsKICAgIHZh ciBkb2lJbmRleCA9IGdldERvaUluZGV4KGRvaSk7CiAgICBpZiAoIWZpZ3VyZVZp ZXdlcil7CiAgICAgICAgZmlndXJlVmlld2VyID0gbmV3IEFycmF5KCk7CiAgICAg ICAgZmlndXJlVmlld2VyWzBdPWZpZ3VyZTsKICAgIH1lbHNlIGlmKGRvaUluZGV4 ID4gLTEpewogICAgICAgIHZhciBkb2lJbWFnZXMgPSBmaWd1cmVWaWV3ZXJbZG9p SW5kZXhdLmltYWdlczsKICAgICAgICBkb2lJbWFnZXNbZG9pSW1hZ2VzLmxlbmd0 aF0gPSBpbWFnZXM7CiAgICAgICAgZmlndXJlVmlld2VyW2RvaUluZGV4XS5pbWFn ZXMgPSBkb2lJbWFnZXM7CiAgICB9ZWxzZXsKICAgICAgICB2YXIgc2l6ZSA9IGZp Z3VyZVZpZXdlci5sZW5ndGg7CiAgICAgICAgZmlndXJlVmlld2VyW3NpemVdPWZp Z3VyZTsKICAgIH0KICAgIHdpbmRvdy5maWd1cmVWaWV3ZXIgPSBmaWd1cmVWaWV3 ZXI7Cn0KLy9hZGRlZCBieSBBdHlwb24KZnVuY3Rpb24gcHJlcGFyZVRodW1Gcm9t Rm9ybShmb3JtKXsKICAgIGlmICghZm9ybSkgcmV0dXJuOwogICAgaWYgKCFmb3Jt LmRvaSkgcmV0dXJuOwogICAgdmFyIGRvaUlucHV0cyA9IGZvcm0uZ2V0SW5wdXRz KCdjaGVja2JveCcsJ2RvaScpOwogICAgdmFyIG1heD1kb2lJbnB1dHMubGVuZ3Ro OwogICAgdmFyIGRvaSxpbnB1dCwgc3ViamVjdDsKCXZhciB0aHVtYnM9MDsKICAg IGZvciAodmFyIGNvdW50PTA7IGNvdW50IDwgbWF4OyBjb3VudCsrKSB7CiAgICAg ICAgLy9kZXRlcm1pbmUgaWYgdGhlIGFydGljbGUgaGFzIHRodW1ibmFpbHMKICAg ICAgICBpbnB1dCA9ICQoZG9pSW5wdXRzW2NvdW50XSk7CiAgICAgICAgZG9pPSBp bnB1dC52YWx1ZTsKICAgICAgICBpZiAoZ2V0RG9pRmlndXJlcyhkb2kpKXsKICAg ICAgICAgICAgaW5wdXQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdkaXYnKVsxXS5zdHlsZS5kaXNwbGF5PSdibG9jayc7CgkJCS8v IHRodW1icyB3aWxsIHJlbWFpbiAwIHVubGVzcyB0aGVyZSBhcmUgdGh1bWJuYWls cyBvbiB0aGUgcGFnZQoJCQl0aHVtYnM9MTsKICAgICAgICB9CiAgICB9CgoJLy8g RG8gbm90IGRpc3BsYXkgc2hvdy9oaWRlIGJ1dHRvbiBpZiB0aGVyZSBhcmVuJ3Qg YW55IHRodW1ibmFpbHMgb24gdGhlIHBhZ2UKCWlmICh0aHVtYnM9PTApIHsKCQkk KCdhcnRpY2xlQXJlYScpLnNlbGVjdCgnYS5zaG93VGh1bWJzJylbMF0uaGlkZSgp OwoJCWlmICgkKCdhcnRpY2xlQXJlYScpLnNlbGVjdCgnYS5zaG93VGh1bWJzJylb MV0pICQoJ2FydGljbGVBcmVhJykuc2VsZWN0KCdhLnNob3dUaHVtYnMnKVsxXS5o aWRlKCk7Cgl9CgoJLy8gRXhjbHVkZSBFeHBsb3JlciBmcm9tIGxvYWRpbmcgdGhl IHRodW1ibmFpbHMgYXQgcGFnZSBsb2FkCglpZiAoIVByb3RvdHlwZS5Ccm93c2Vy LklFKSBvcGVuTXVsdGlUcmF5cyhmb3JtLmRvd24oJy5zaG93VGh1bWJzJykpOwoK ICAgIHZhciB0b2NOYXYgPSAkKCd0b2NOYXYnKTsKICAgIGlmICghdG9jTmF2KSBy ZXR1cm47CiAgICB2YXIgc3ViamVjdHMgPSAkJCgnZGl2LnN1YmplY3QnKTsKICAg IGlmICghc3ViamVjdHMgfHwgc3ViamVjdHMubGVuZ3RoID09IDApIHJldHVybjsK ICAgIHZhciB0b2NIdG1sID0gICI8aDQ+SW4gdGhpcyBpc3N1ZTo8L2g0PiA8dWw+ IjsKICAgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQgPCBzdWJqZWN0cy5sZW5n dGg7IGNvdW50KyspewogICAgICAgc3ViamVjdCA9ICQoc3ViamVjdHNbY291bnRd KTsKICAgICAgIHRvY0h0bWwgKz0gJzxsaT48YSBocmVmPSIjJyArIHN1YmplY3Qu dXAoKS5pZCArJyI+JyArIHN1YmplY3QuaW5uZXJIVE1MICsgJzwvYT48L2xpPicK ICAgIH0KICAgIHRvY0h0bWwgKz0gJzwvdWw+JzsKICAgIHRvY05hdi5pbm5lckhU TUw9dG9jSHRtbDsKfQovL2F0eXBvbgpmdW5jdGlvbiBwcmVwYXJlVGh1bWJuYWls cygpewogICAgdmFyIGZvcm0gPSAkKCd0b2NBcnRpY2xlcycpOwogICAgcHJlcGFy ZVRodW1Gcm9tRm9ybShmb3JtKTsKfQovL2F0eXBvbgpmdW5jdGlvbiBwcmVwYXJl VGh1bWJGcm9tVGFiKHRhYil7CiAgICB2YXIgZm9ybSA9ICQodGFiKS5kb3duKCdm b3JtJyk7CiAgICBwcmVwYXJlVGh1bUZyb21Gb3JtKGZvcm0pOwp9CkV2ZW50Lm9i c2VydmUod2luZG93LCAnbG9hZCcsIHByZXBhcmVUaHVtYm5haWxzKTsKCi8vIEF0 eXBvbiBKUwpmdW5jdGlvbiBoaWRlQW5kU2hvdyhoaWRlVGhpcywgc2hvd1RoaXMs IGNzc0NsYXNzRm9yU2hvd24sIGhpZGVUYWIsIHNob3dUYWIpIHsKICAgIGhpZGVU aGlzID0gJChoaWRlVGhpcyk7CiAgICBzaG93VGhpcyA9ICQoc2hvd1RoaXMpOwog ICAgaWYgKGhpZGVUaGlzICYmIGhpZGVUaGlzLnN0eWxlLmRpc3BsYXkgIT0gJ25v bmUnKSB7CiAgICAgICAgaWYgKGNzc0NsYXNzRm9yU2hvd24pIHsKICAgICAgICAg ICAgJChoaWRlVGFiKS5yZW1vdmVDbGFzc05hbWUoY3NzQ2xhc3NGb3JTaG93bik7 CiAgICAgICAgfQogICAgICAgIEVmZmVjdC5GYWRlKGhpZGVUaGlzLCB7ZHVyYXRp b246MC4zfSk7CiAgICB9CiAgICBpZiAoc2hvd1RoaXMgJiYgc2hvd1RoaXMuc3R5 bGUuZGlzcGxheSA9PSAnbm9uZScpIHsKICAgICAgICBpZiAoY3NzQ2xhc3NGb3JT aG93bikgewogICAgICAgICAgICAkKHNob3dUYWIpLmFkZENsYXNzTmFtZShjc3ND bGFzc0ZvclNob3duKTsKICAgICAgICB9CiAgICAgICAgRWZmZWN0LkFwcGVhcihz aG93VGhpcywge2R1cmF0aW9uOjAuM30pOwogICAgfQp9CgpmdW5jdGlvbiB0b2dn bGVEaXNwbGF5KGVsZW0pIHsKICAgIGVsZW0gPSAkKGVsZW0pOwoJaWYgKGVsZW0u c3R5bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKCQlFZmZlY3QuQmxpbmREb3duKGVs ZW0sIHtkdXJhdGlvbjogMC4zfSk7Cgl9CgllbHNlIEVmZmVjdC5CbGluZFVwKGVs ZW0sIHtkdXJhdGlvbjogMC4zfSk7Cn0KCmZ1bmN0aW9uIGpzb25mZWVkKGRhdGEp IHsKICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ2luRXJy b3JNZXNzYWdlJyk7CiAgICBlLmlubmVySFRNTCA9IGRhdGEubXNnOwoKICAgIC8v IFNldCBzb21lIGJhc2ljIG9wdGlvbnMgZm9yIHRoZSBjb29raWUKICAgIHZhciBv cHRpb25zID0geyBleHBpcmVzOiAwLCBwYXRoOiAnLycsIGRvbWFpbjogJy5hY3Mu b3JnJyB9OwoKICAgIC8vIFByZXNldCB0aGUgdmFsdWUgb2YgdGhlIGNvb2tpZQog ICAgdmFyIHZhbHVlID0gbnVsbDsKCiAgICAvLyBJZiB0aGUgc2Vzc2lvbiB3YXMg Y3JlYXRlZCwgc2V0IHRoZSBjb29raWUgdmFsdWUgdG8gdGhlIHNlc3Npb24gaWQK ICAgIGlmIChkYXRhLnNlc3Npb25pZCkgewogICAgICAgIHZhbHVlID0gZGF0YS5z ZXNzaW9uaWQ7CiAgICAgICAgLy8gQWN0dWFsbHkgY3JlYXRlIGhlIGNvb2tpZQog ICAgICAgIGpRdWVyeS5jb29raWUoJ0VSSUdIVFMnLCB2YWx1ZSwgb3B0aW9ucyk7 CiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ3JlZGlyZWN0VXJpJykudmFsdWUKICAgIH0KfQpmdW5jdGlvbiBkb0xvZ2lu KHNtSG9zdCkgewogICAgdmFyIHVzZXJuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50 KCQoJ2Fjc0lEJykudmFsdWUpOwogICAgdmFyIHBhc3N3b3JkID0gZW5jb2RlVVJJ Q29tcG9uZW50KCQoJ3Bhc3N3b3JkJykudmFsdWUpOwogICAgdmFyIHVybCA9IHNt SG9zdCArICcvcG9ydGFsL3NpZ25vbj91c2VybmFtZT0nICsgdXNlcm5hbWUgKyAn JnBhc3N3b3JkPScgKyBwYXNzd29yZDsKICAgIGpRdWVyeS5hamF4KHsKICAgICAg ICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICBk YXRhVHlwZTogInNjcmlwdCIKICAgIH0pOwogICAgcmV0dXJuIGZhbHNlOwp9Ci8v QWRkZWQgYnkgQXR5cG9uOiBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiA1IGl0ZW1z IGluIGpvdXJuYWxIb21lLCBzZXQgcmFuZ2UuCmZ1bmN0aW9uIHNldFJhbmdlKGZv Y3VzTGlzdCl7CiAgICB2YXIgYXJ0aWNsZXMgPSAkKGZvY3VzTGlzdCkuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgnYXJ0aWNsZUJveCcpOwogICAgdmFyIHJhbmdlID0g JChmb2N1c0xpc3QpLmRvd24oJ2Rpdi5yYW5nZScpOwogICAgdmFyIHNpemUgPSBh cnRpY2xlcy5sZW5ndGg7CiAgICBpZiAoc2l6ZSA8IDIpewogICAgICAgIHJhbmdl LnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgICAgIHJlbW92ZVZpZXdBbGxMaW5r cyhmb2N1c0xpc3QpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChzaXpl IDwgNSl7CiAgICAgICAgcmFuZ2UuaW5uZXJIVE1MPSdOb3cgc2hvd2luZyAxJm5k YXNoOycgKyBzaXplOwogICAgICAgIHJlbW92ZVZpZXdBbGxMaW5rcyhmb2N1c0xp c3QpOwogICAgfQp9Ci8vQWRkZWQgYnkgQXR5cG9uOiBpZiB0aGVyZSBhcmUgZmV3 ZXIgdGhhbiA1IGl0ZW1zIGluIGpvdXJuYWxIb21lLCByZW1vdmUgIlZpZXcgQWxs IiBsaW5rcwpmdW5jdGlvbiByZW1vdmVWaWV3QWxsTGlua3MoZm9jdXNMaXN0KXsK ICAgICQoZm9jdXNMaXN0KS5kb3duKCdkaXYudmlld0FsbCcpLnN0eWxlLmRpc3Bs YXk9J25vbmUnOwogICAgJChmb2N1c0xpc3QpLmRvd24oJ2Rpdi52aWV3QWxsTGlu aycpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwp9CgovLyBBbGV4IEtpbTogZnVuY3Rp b24gdGhhdCB3ZSdsbCBiZSB1c2luZyBvbiBzdGF0aWMgcGFnZXMKZnVuY3Rpb24g bG9hZEF1ZGlvKGxpbmspIHsKICAgIHZhciB3cmFwcGVyPSQobGluaykucGFyZW50 Tm9kZS5wYXJlbnROb2RlOwogICAgdmFyIGxvYWRMaW5rPSQod3JhcHBlcikuc2Vs ZWN0KCdkaXYuYnV0dG9uJylbMF07CiAgICB2YXIgYm94PSQod3JhcHBlcikuc2Vs ZWN0KCdkaXYuYXVkaW9Cb3gnKVswXTsKCWlmICgkKHdyYXBwZXIpLnNlbGVjdCgn ZGl2LmluZm8nKVswXSkgJCh3cmFwcGVyKS5zZWxlY3QoJ2Rpdi5pbmZvJylbMF0u c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICBsb2FkTGluay5zdHlsZS5kaXNwbGF5 PSJub25lIjsKICAgIGJveC5zdHlsZS5kaXNwbGF5PSJibG9jayI7Cn0= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/favicon.ico Content-Transfer-Encoding: Base64 AAABAAIAEBAAAAEACABoBQAAJgAAACAgAAABAAgAqAgAAI4FAAAoAAAAEAAAACAA AAABAAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAB9AAAAfwAAAHsZ AAB3LwYAbjoeAHM3GgB/QBoAQ0s/AH9KLQBkTzwAbVM/AHlSOQB6VTsANWdpADpy dgBSUEMAWmVdAF1oXwBWbWwASXRqAEVwcABIeHoAggAAAIMAAACEAAAAjgAAAJUA AACbAAAAmgwAAJQXAACXGQAAowAAAKcCAAC1BwAAvgAAALMMAACmEwAAqBMAAIgi AACUIgAAkSUAAJs2FQCbPhkAsiQAAKsxAACvMAAA1AQAAMQUAADEHAAAjEQZAINO MwA6eIEAAHu3ADaDkgAAi6oAH4yjABiOpQARk68AGpm1AByYtAAqjqIALJCjAACt 0QAAhP8AAJL/AACT/wAAl/8AAJn/AACa/wAAnP8AAJ//AACg/wAAov8AAKP/AACk /wAApf8AAKb/AACp/wAAqv8AAKv/AACu/wAAr/8AALfyAACx/wAAsv8AALP/AAC0 /wAAtf8AALb/AAC9/wAAwv8AAMb/ADHY/wBxz9wAjtnhAJHY4QCe/v8AwMDAAHcA AAACAAAAyAWRfJggBgAQFo4AUQWRfHgTBgBtBZF8AAAAAD0EkXwAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAzjORfOv1AABgE44AAAAGABQYjgAY7pB8wECRfP////+7QJF8jtYBAEUA AABUFY4AgAAQwBQYjgAY7pB8cAWRfP////8AAAAAPQSRfIgWjgB1C4F8twAAAAEA AAACAAAABBiOABgAAAAAAAAAcBaOAEIAAAAAAAAAVBaOAAAAAAAAAAAAAAAAAAwA AAACAAAAAQGQfADs/X9mAAAAAAAAAAMAAABuABoCoCAGAAAAAACgIAYABQAAAN/i gHysFo4ATxqAfKgBAAAAAADAAAAAAAAAAAACAAAAgAAAAAAAAADsF44AP2VLAFAi +QAAAADAAAAAAOAXjgACAAAAgAAAAAAAAACw708A5PWoAAIAAABDOlxEb2N1bWVu dHMgYW5kBwAAAHRpbmdzXHJ5Yzk2XERlc2t0b3BcZmF2aWNvbi5pY28A2YvUdwDg /X90F44AAAAAAGAL+QAqiNR3/+mQfA4QgXyoAQAAAAAAAAAAAAAAAAAAaBeOAGAL +QAmAAAAAAAAAC4QgXwmAAAABBiOAAIAAAAwAAAAJgAAAAAAAAAmAAAAVBeOACqI 1HcUGI4A85mDfDgQgXz/////LhCBfNZlSwCoAQAAYAv5ACYAAAC4F44AAAAAAAAA AAAAACsEGgAAAAAAAAAAAAAAACsdVA8bAAAAAAAAAAAAACscEVwMJ2QAAAAAAAAA ACsDBxI3FAopAQAAAAAAACsYJjU+ND8XLSoDAAAAACsZOBYuPCw9LxM5BgMAACsC KF0QMQ1ADjI6OwsgAQADISMFHiQIFTMwIAkfJSIYYklLAAAAV1ZYWgAAAFtIYgBe RUpOUFVZWlZQTUtHXgAAAGBES09SU1NST0tFYAAAAAAAYUVMT1FRT0xGYQAAAAAA AABfQ0dKSEZCXwAAAAAAAAAAAAAAQgAAAAAAAAAAAAAAAAAAAEE2YAAAAAAAAAAA AAAAAABgAAAAAAAAAAD8fwAA+D8AAPAfAADgDwAAwAcAAIADAAAAAQAAAAAAABw4 AACAAQAAwAMAAOAHAADwDwAA/v8AAP4/AAD+/wAAKAAAACAAAABAAAAAAQAIAAAA AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+a1sAf2pcAHttXwB+bFwAe25gAHlv YgBvd28Ad3BkAHhwYwB8cWQAf3JlAHVyaABydGsAcXVsAHN4bwBteXEAa3l3AGl7 dgBvfXYAZn56AHFzcQCbUzUAmlM2AJlUNwCaVDYAm1Q2AJxVNwCWVzwAmVU4AJxV OACcVzkAnVc5AJ5ZPACeWj0AoFw/AI9cRACLX0sAjF9IAJBbQwCRXEMAkF1EAJ9d QACgXEAAoV1AAKJfQwCiX0QAjWJMAIhkTwCUZEsAhmNTAIdkUACDZVcAgGpZAKJg RACkY0cApWVKAGKBfwA+nKwAOpyxADmfsQAvpr0AL6a+ADWitgA4oLMAM6O5ADSh uQBchocAXIOKAFuGiABah4kAV4mNAFiJjABPj5YAVYuQAFSLkQBSjZMAUY2UAE6Q mQBNkJoASZSfAGGCgABGlKQAQZqpAB2y0wAatdcAJ6zHACWtyQAlrsoAILDPAAC8 +gAAv/4AAMH/AADD/wAAxf8AAMb/AADI/wAAyf8AAM3/AADO/wANzv8AD87/ABfO /wAezf8AANH/AADT/wAA1P8AANX/AADX/wAI0P8ADND/AADY/wAA2v8AANz/AADe /wAmzP8AMd7/AADm/wAA5/8ABeX/AAjj/wAA6f8AAun/AADq/wAW5/8AHuf/ABvq /wAC8f8AAPX/AA3x/wAA+/8AAP//ACbp/wA35v8AN///AD///wBIxf8AV8H/AFf/ /wBb//8AwMDAAH9qWgAUGI4AGO6QfMBAkXz/////u0CRfI7WAQBFAAAAVBWOAIAA EMAUGI4AGO6QfHAFkXz/////AAAAAD0EkXyIFo4AdQuBfLcAAAABAAAAAgAAAAQY jgAYAAAAAAAAAHAWjgBCAAAAAAAAAFQWjgAAAAAAAAAAAAAAAAAMAAAAAgAAAAEB kHwA7P1/ZgAAAAAAAAADAAAAbgAaAqAgBgAAAAAAoCAGAAUAAADf4oB8rBaOAE8a gHyoAQAAAAAAwAAAAAAAAAAAAgAAAIAAAAAAAAAA7BeOAD9lSwBQIvkAAAAAwAAA AADgF44AAgAAAIAAAAAAAAAAsO9PAOT1qAACAAAAQzpcRG9jdW1lbnRzIGFuZAcA AAB0aW5nc1xyeWM5NlxEZXNrdG9wXGZhdmljb24uaWNvANmL1HcA4P1/dBeOAAAA AABgC/kAKojUd//pkHwOEIF8qAEAAAAAAAAAAAAAAAAAAGgXjgBgC/kAJgAAAAAA AAAuEIF8JgAAAAQYjgACAAAAMAAAACYAAAAAAAAAJgAAAFQXjgAqiNR3FBiOAPOZ g3w4EIF8/////y4QgXzWZUsAqAEAAGAL+QAmAAAAuBeOAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA2FhY2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAANhYWFio2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYWGAYJHRY2AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA2FhYUOlVKFhY2AAAAAAAAAAAAAAAAAAAAAAAAAAAA NiwWFgdBWBIWFiI2AAAAAAAAAAAAAAAAAAAAAAAAADY3IBYWDzxONRYWFiM2AAAA AAAAAAAAAAAAAAAAAAA2OBYgKTQKORENAykWFjY2AAAAAAAAAAAAAAAAAAAANjgW FhZLQlBHT1A9ORYWFi42AAAAAAAAAAAAAAAAADYtFhYWFg5AJiQmJkABFhYWFis2 AAAAAAAAAAAAAAA2HjNDEEkxGU1UKjBUURcWDFNFKBs2AAAAAAAAAAAANhYWJVJV PycWBVUFFVUFFhZZTEiNFhY2AAAAAAAAADYWFhYfE1ZEHBYWMzo6MxYWKlcEAjIW FhY2AAAAAAA2FhYWFhYIPgsaFioqOkwzKhYWRlU7MhYWFhY2AAAANhYWFhYWFhYW FhYWMzpMOTozFhYdLyEWFhYWFhY2ADYqKioqKioqKioqKioqKhYqFioqKioqKioq KioqKio2AIJaZmtniAAAgWheAFpaWlpaWgBrWnkAAImKclprWmsAAGtaWlpeaWiK enBra3paWnpmiWtweomDamprZmtrAAAAAIlah2tza2hih3paWmaJWlpaWm1iamNr Xm1aawAAAAAAAHBpb2FsaWteZVprWlxebVyCa4lqbmpoYHEAAAAAAAAAAItygoB7 aGtqWlprd2haa1ppa2praWh4AAAAAAAAAAAAAH92dXBpXWpaWmWJWlpaWl9kamhq fQAAAAAAAAAAAAAAAIZ7dWpdWlpaWlpaWlpaXWlqa34AAAAAAAAAAAAAAAAAAIVq WlpaWlpaWlpqWlpba2uEAAAAAAAAAAAAAAAAAAAAAHpaWlpaWlpaWmpaWlpdfAAA AAAAAAAAAAAAAAAAAAAAAABeAFptWloAAFpaXnQAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHpaWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFpaWlprAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWlprawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA///////+f////D////gf///wD///4Af//8AD//+AAf//AAD//gAAf/wA AD/4AAAf8AAAD+AAAAfAAAADgAAAAQAAAACBiBGAwAAAAeAAAAPwAAAH+AAAD/wA AB/+AAA//wAAf/+AAP//6GH///x////+D////h////7///////8= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=atypon-print.css Content-Type: text/css; charset=UTF-8; name=atypon-print.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/css/atypon-print.css Content-Transfer-Encoding: 8bit body, #container { width: 100%; } ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=acspubslogo.gif Content-Type: image/gif; name=acspubslogo.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/acspubslogo.gif Content-Transfer-Encoding: Base64 R0lGODlh2AApAPf6AP///yBai/n7/MbU4YemwU17ohdThvf5+8nX4xRQhP7+/8jX 4/3+/vr8/RJPgxZShRNQhDdqlyFai8fV4vz9/pm0yuPq8MPS4BFOg9fi6vT3+UFy nFyGqneauPH1+C5kklaBp+Lp8MTT4JSvx/X3+qi/0vv8/Sdejj5wm+zx9R5YihlV h7TH2O7y9qS7z1WBpsHR3zZqlsrY5Ju1y+Hp7+ju89Ld51F+pEt6ofD098zZ5Ul4 oPb4+jhsmFmEqZeyyUNznRpViC1jkl2Hq+Do7yNcjClhkFuGqubs8qrA09rk7Ke+ 0RtWiDlsmJCtxR1Xid/n7vj6/ER0nVB9pK3C1Jq0y9Dc5mGKrb/Q3u/z997n7o6r xDNolW+UtM3a5U98o5GtxtHd5yZejrzN3B9Ziihgj9bg6UZ1niJbjMfW4mSMrliD qOnv9Eh4oOXr8dnj68XU4TBlk+3y9jdrl6e90c/b5o2rxLbJ2dzl7TRolXibucvZ 5IinwSRcjX6fvG2Ts9vk7Ep5oTptmZOvx8DQ3naZt6vB0+Tr8YupwxVRhRhUh1N/ pdfh6rrM2/L1+FeDqJizyr3O3dXg6X+gvJ22zIOjvlJ/pWqRsidfj7vN3Iyqw4qo wkV1nuft8iphkOrw9L7P3bDE1t3m7U58o+fu8563zXqdurfJ2TVplnKWtc7b5j9x m6O7z5KuxoWkv6zC1F6Iq2ePsFSApixjkbXI2LnL23udutji63OXtkJznI+sxYal wPP2+WuRsleCp7LG12WNr2KKrWySs6m/0qC4zTJnlBxXiXWYt5axyGaNr5WwyKW8 0GCJrDxvmkd2ny9lk4Ghva7D1Stika/E1dTf6IemwNPe6IChvcLS30x6olqFqZ+4 zbPG1ztumevw9Zy2zIKivrjL2miPsWOLrnmcuaK6zmmQsT1vmiVdjTFmlKG5zkd3 n2eOsKa90Hyeu7fK2nSYtnCVtISkv3GWtbHF1omowl+IrH2fu0Bxm26UtA9NggAA AAAAAAAAAAAAAAAAACH5BAEAAPoALAAAAADYACkAAAj/APUJHEiwIMEP5aRsUGGw ocOHECNKnEjRoYMYQiBezFixo8ePICNKAQBADrYXTEI+TJCAIoQgxlo6VBEggIGI EFiy/BiAxwWIPX8KxHdNjMqCGDAUDKYn0dGnEJsdAKCAJAyoBGFlyDAJYiJ2LBi5 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 kMFI3MRqGRAAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=title.gif Content-Type: image/gif; name=title.gif Content-Location: http://pubs.acs.org/appl/literatum/publisher/achs/journals/covergifs/jmcmar/title.gif Content-Transfer-Encoding: Base64 R0lGODlhjAFLAPf+AP79/ZsENv37/PLf5Z0JOpkBNMRsiZoDNfjt8f35+v78/fv2 +KEVRMFjgqkoU9ecsJwHOZsFN71Zevry9ZoCNawvWcBige/X3682Xv36+8VvjO/Y 4KUfTM+GnrA5YfDZ4enH0tGNpMRrieW/zKQbSaorVeG1xLE9ZN2puvXm6+K3xfDa 4fPg5rREafz3+Z8PP5sGOOvO2Pz4+fXn7PTk6aYgTbpSdackULE7Yvnw850KO8d0 kO/W3uGzwurL1efDz58OPsBhgd2qu/Pi6PHb4vv09tukttaYrdOQps6EnZ0LPJ4N Pd2rvLE8Y+3R2qUeS7xXebVHbKYhTaUdSpwIObI/ZbxYeb1ae+CxweG0w+W+y8Vt iq41XeW9yvHc4+fE0J8QQPbo7ffr76IWRaEUQ+rK1awwWaMYRtKPpe3S26stV54M Pfnx9NGLotqita84YLdKbujG0a83X/fs8Prz9evM1rtWeNebr96tvdult+S8yfbp 7fnv8ubBzffq7vTj6b1bfKASQeO4xqMZR75dfbNAZsl5lNyouaknUtCKoassVqMa SKQcSeS7yevN1+nJ1MFlhNearqETQsp7lbZJbe7U3a40XaIXRaoqVfPh58dzj/v1 98JnhdidsdSUqenI09WVqrA6YcFkg7hNcb5cfcJmhd6svd+wwNumuNSTqbRDab9f f+K2xa0yW8Nph+zP2eCywe3T3Ml3ktaZrb9ggMl4k60xWqkpVMVui9WWq/Xl6sZx jbVFat+vv6ARQd+uvvHd5O7V3acjT7VGa+jF0c6FnaciTrI+Zcp6lct+mKgmUfju 8cdyjtmgs8h1kct8lr9eftCJoc2Cm7lPcrlRdLNBZ8ZwjbZIbbdMcMx/mfLe5cyA mdGMo9mhtOO6yLdLb6glUefCzq0zXLhOcbpTddynuasuWLNCaLtVd7tUduO5x8Nq iNKOpct9l9iesdWXrLlQc9qjtch2kcNohtORp+bAzdOSqM2Bmtmfss2DnOzQ2c+H n8+IoJkAM////wAAACH5BAEAAP4ALAAAAACMAUsAAAj/AP0JHEiwoMGDCBMqXMiw ocOHECMmnGPlmo0hEgl+gAJkR8aPIEOKHEmypMmTKFMuVNCsTTQQKkma6WdsAcgh Z/r1Qxezp8+fQIMKHRpylE4hRCFi6IdIAEhNW+rkS5a0qtWrWLNihaLThNaESx04 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 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=cart2.gif Content-Type: image/gif; name=cart2.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/cart2.gif Content-Transfer-Encoding: Base64 R0lGODlhDwALAIABADNmmQAAACH5BAEAAAEALAAAAAAPAAsAAAIehIOpCtHvYouy UojRvHbT9SXGOILmqS2eeGitCicFADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=cover.gif Content-Type: image/gif; name=cover.gif Content-Location: http://pubs.acs.org/appl/literatum/publisher/achs/journals/covergifs/jmcmar/2005/jmcmar.2005.48.issue-4/cover.gif Content-Transfer-Encoding: Base64 R0lGODlhcwCYAPcAAAICAgcICAMEGBkYGQ0TEQEAIwILKw0OKwUGJwYJMgcTKBcX KBEQLw8pGgYqKAgsMwYxKBgpKBkrNBcxKg8yMyUZKyYoGS0sFCQkJCQsJCQsKysr JCwsLCckKiQsMiwsMSooNiUxKysxKygxJSsxMiQyMzIsKzQqJzIrMjQqODExLDY0 KDIxMjk3NyUdGTEzRy4vYTVKMS1kLzdfS0c3NlY0OE0uLWc0NnEvMGocHFc6Qmg4 RXg5SHorQmUVXkZGNVhYOExPMlRrMmtTNmZnOmNyLGpzKmdzNnh3O25rMVRgGFhZ Q1dXWEhLSFNyR29QSmloQmp3R3d3RXFsUHFxb1VYajdIokxSr1NWlFZWtTaOTXuK NXSMMEqGO1aJVFSQUFqpT3mGR26PTWmTbmmrVmenanHHa3uRuYc0NZY1N44vMrMV Nac2Nrg1OLAsM5UXLIoBWZgFV5sYS5wWVZMITY8EYYk5S50kVZc3Spg5UpkqTKIL V6QZS6ISVKETWKEbU6cbWLUaT6YnTKMiU6khU6cpV6s1Taw6TaY5SaU7Uqw0Uqw0 Wq46U6w6WaU3V7EqVrE6TbQ2S7I1U7M0WrE5VLI6Wrk5VLs6Wbo1VbEpSKs4YbQ3 YqkpYqUVYpFNOIxyNqxNO7JzN4FSHJNMSIp1SapESKpCVbZKSrVFVbdVSbZUUrdq TJhpa84VNMY2ONUqONg2OdErL+oZM+g3OPs2Oe4pNsM4V9U0Rfo3ROoyRtgaRMpf OMdST8ZpR8d2SM9zT+liW4qPN6eZN4WGSI2STI+Raay0TayxbpCpVbLCXbTEYqvF YM+SO9erPPOSPPC0OcmGRtWISdeVR9ONUtqmSNuxTe6EVOaFV/KDUu6MSvyrSP6x TPW2SOuvSvSIYvHUO/z+K/39NP38O/v2OfjmONfDItDNTPfYRO7JSfrpQ/7yQ/78 Qv75SfX2UuXpa7LCPY6Mjq2usKCqnqetzbnGtKDBktqnocS7zdnho8zNzvz9/ff7 9uzp6uLg5bfEyuJ/kSH5BAAAAAAALAAAAABzAJgAAAj+AClRYkRwkSSCBCU1kiQw 4SKCAgciZGQQIqOBAg8ykqRooMaIGy821JgwYcONIyeGFOnxosuDIFGqnChxpk2V igjmvLnz5syePoPqDArUZtFGQo3iFNqz6URFRVU6YjR1piONGoFWJWlzatWaVJNW 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 SkAAADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=icon-html.gif Content-Type: image/gif; name=icon-html.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/icon-html.gif Content-Transfer-Encoding: Base64 R0lGODlhEQARAPe/AP+WI9vw/fr//3qXwsfl+v7//+Li69Dx//////z//4WUsuHj 7d3t/XmZxYKfxPv+/8bz/4PLTuTKsM/2/8jv/+D1//biwsfr/8z1/93f6c3ru5Wl wNPw/WK4T4bMMNjd6tPp/Juyzejs9eTDrDCT5zaM4L7grNfy/3Bzhfj//6rE5+fQ zVOb2IifwoqkxlaV1ub6/6DBy9/g6F2y+cDr/+Pcu+/5//vkvKCrwOe+q8HNzP/m vHTC/NXe78Pc92KxK7Dg/unr4ofP/oOz4uDp95TM+vT9/cLZ2NHe887q/POdW+TK s9n1/8LSvOPm6m/AZvfy8KrHzW2wdvL//43Fd9fbwZnA6Pjgu5vVhbfVu8XI14LG h1edxoOQq73T7r7f7N3BscPL4Nzt/fH//97g6ub+//3//8jt/8nt/6PD7eTArPXm wdrywOf//937/2q2S+yiZsDi+uno8a/E5cTq/+Xz97rjpFuc1keZ567C4U+0/N/g 6+7fuej//57P89f7/264t7DS4obE7aiuv0mvIYvD8ZzRzOPk7IaewjyK37Pb+ZOi vM7y/7rH4KLZ/X6xW97y/oifw4KexpLK+r3o/6bP5uH3/nu7nvCmaYOex83m72+0 peL0/3aumN2zppW65eTFsI+euYmWseTn7Mrq/3257rrU8Lze93G+9FW2m+D06efC rnycxvf5/IiVscvm+uD00vn4+3KwPaW92pXPvtXu/uX//5upwTuiu/n9/2Kx9523 1a/I5X+6YvXgv////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAL8ALAAAAAARABEAAAj/AH/9elDATIoxME5c8CJH oEMLvq7suLGGT40qOko1QuLwF4CPIEHCmZQnjQ+HIVNiQqMizJxDAlOGVOLm1ach VmT8krAEDKgRalbl8LRiSoBTfgoNcrhAgNNfAaIGIEBAkSMcTAUkQEDE1JcsTUTU igPklkMDrQoEOaIKlok3dxgkobThbK5YMTSwsUNlE64onOgsOltgVAlUWDz00pXq kZgDoRzuQeAEzwxaPy7x6CALxAFRDskkgPJCTxFDhLYA6gSJkSuHGWwY2UVCCKkI TxLxYkJBgcMPlirUCcFCkBQuszicodHFYY82ZWz10VQpEIE/EzBA8C1QSwsXiBxI C4qUidWA8w1Q/AoIADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=icon-pdf-sm.gif Content-Type: image/gif; name=icon-pdf-sm.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/icon-pdf-sm.gif Content-Transfer-Encoding: Base64 R0lGODlhEQARANUjAOR8gd3Q0uCsr+lARuKUmN+4u/JVW3t8fJ2DhPDw8N7ExuVw dbEVG+FES9s+RDc3N1NGR4UPFOsoLzsHCc8YH+dYXqeNj3YOElgKDXI+QG9iY+OI jOZkaehMUqWlpm5ub+0cJMDAwNzd3v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAARABEAAAaGwNEoESoajyGhMnTwOJ/O QwQhBFmvWFDHw6AgEtnwFnOZhMLZjmj9CRkMDUdn3pEMOou1qC0MefQiAAKAe0kj foAcg4B8h396ioSNiJAEkoaUIgFzAYyYj4EEBR0KepOPARUFABwDIAMcp5ocgnoK Gx0anwR4hKaYFne+v30QGR/IycoPIUEAOw== ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=johnson_matthey_160x160.gif Content-Type: image/gif; name=johnson_matthey_160x160.gif Content-Location: http://pubs.acs.org/sda/74424/johnson_matthey_160x160.gif Content-Transfer-Encoding: Base64 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 CH4P8F33l3jHJ2XtN4H9VoEjaAAhAAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=sciFinder-TOC.gif Content-Type: image/gif; name=sciFinder-TOC.gif Content-Location: http://pubs.acs.org/sda/3023/sciFinder-TOC.gif Content-Transfer-Encoding: Base64 R0lGODlhtAAyAPcAANnr+OHu+tLn+Mvc6tzp9LW2tqipqgsIBsPHydbo+PH4/jpY p////9TV15KcpMva5K9oqoSIitPm9uPs9GZmZdTn9vH2+pVorHZ4edLh7Oz0+8TV 45ymrUZirbDF40ZbqdLb49Xo99rk7JaXmJpdpVdXVUhosMbM0urs7UlIRm5aprNb oneNxb7DxTk2NHKEvLzM2snU3vz9/87i8pap0VJqslhYptHn9vj7/ejy+01JncLS 3igmI66wstnn8dHd6au5xuPw+7a7wMpImu3u8Gx6nfP09Nzt+ePp7ePw+dzy/iU0 W/v8/s/n9u36//n8/9rs+bxSnsrW4Fdlru30/Pv//6KtuGV8u9Xl8dDh8Or0+/f7 /vD4+4Way/X8/sx6te/2/N/u+cfY5eHP5uPk5Y6Wms7f7fP5/ezx9aWz1tLk8fj8 /+ny/HdhqWllreTx+9/t+t3i5un0/d7l61Fml7nJ1sfa6eXy+/T4/lhytcrV6n6B gyMgHWNrsdDk9Ofy+0VDQNPl89Lo97fE3/H9/zUyMNnu/NTn+LCBudvr+t7s9vn5 +eTu+NbG4ubw+nByc8zR1i9BcOb0/ntytLHAzPv9/N/u+rbH1NPk82RRoS8sKfn8 /T88OYqNj+Dx/fb5/fDz+jxQnfP6/9rc39zf7/j+/+H1//b3+N7o8IdVouPv9xIZ KsHW7NTo99Hl9L/P3vf7/FNSUN3v/NXs+s/Y7BkXFOX5/+72/tzu+eDm8v/+/eno 893p99Tq+rG93U9OTExutPj5/ufw99Ts/F9iY1ROoBsmQtfq+NDl9X19fdXn+1xc W/z9/bnG0uHv/Nrr/dHi89Xr/c9WoW5sa/39/vr9/fX6/ur4/uv2/eTx+tTq+WNi YV9eXuzz/Gprbf3+/vv7/cnH5EFAPv39/cvf72xvcOA7kF1yoKvA39jr+9bj7pCQ j9Dg8c/Pz56hoj8/PdPl9dfg50tMTezg7/Hg7TAvLeLE39XT6eDV6ODs+eJtqu3s 9ry9vdfp+M7Y4Oz1/iH5BAAAAAAALAAAAAC0ADIAAAj/AAUIHEiwoMGDCAfeuCGB YcKHECNKnEixosWLAipo3Mixo8ePIFtVSCALijIJIUCqXMmypcuXMGPKZJmgps2b OHPq3JngmCEPrJ4lCMGzqNGjSJMqXcq0aYJ+UKNKnUq1atUEADyh63DFTphjVsOK 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 KrirAL0SBQR1Faho28OCPX69mzMgADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=ccg_moe_081101_120x600.gif Content-Type: image/gif; name=ccg_moe_081101_120x600.gif Content-Location: http://pubs.acs.org/sda/55232/ccg_moe_081101_120x600.gif Content-Transfer-Encoding: Base64 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 ZMpVAzWAAzzaoz76owYiEBNKoVQUCAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=portico.gif Content-Type: image/gif; name=portico.gif Content-Location: http://pubs.acs.org/sda/4205/portico.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAOPgvOHeu+bjvujlv+bjvePgu+fkvunmweXivefkv+vowYKB dsLApd/cueThvO3qw+ThvcXDqc/Nrrm3ncbEqOjlwO/sxevows/Nr4uKfNzZuHd2 btzZt5CPgnNza5CPf+Lfvbq5n56di+3qxOzowri2nc3LrcC+pbq4oKCejLu5n+Xi vuPgveXiv83KrLa0nb+9pdTSs7+9pKKgjb+9oe7rxLq4n7a0nJuZhpqZhtPQsnZ1 a3p5cKqokubivXx7cI6NfoaEd3FwaHZ2bd7buezpw8jGqZybh+jkv+bjv3Z1bImI fKOgjJ6ci56cit3buWxsZcrHqpybiZWUhMjGq2ZlYNHOr4iIeWRkX3Nya9vYuHd2 a8/Or7+8ocvJraWkkuflv8G+pMrIq9LPstHOsIiHea2sluHevsK/puXiwMC+o7+9 oHRzbHNzauPhvNbTtHh3buXivHh3bWxrZNrXt2lpY8LAp8PCp9bUtGpqZdrYt7y6 osbEqZeVhcTCqmpqY+rmwmFhXurmwdXSso6OfpiXhmVlYO/sxGNjX7SzmsjGqp6c jODdut/curq5oayqlOnlwJ+ejLWzm6Sij+Ddu9HOssXDqGpqZLOxmpiWhNXStJeW hIWEeJSSg5ybiMTCptvYt8TCqZ+di7Szm7m2nr68o8fEqOnmwODducjFq3d2bW5t ZpWUgsC+pG5uZn18cYKBdMbDqYiHe6qok2xrZmdmYo6NgIWEd3t6cOHevGtqZKSi jWppY8C9o5eWhcXDqnFwaZ6divDsxJmXhbu6osPApbq5orq5oMPAp/PwxmlpYsnH q39+dIyLf768oZGQg2FhXXFwatjWtZmXh21sZb68oMbDqGloYq2smHRza7CumbKw mYyLe9fUtKOijgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAyABEAAAj/AAEIHEiwoMGDCBMqXMiw ocOHECNKnKiwwDJrXlwICBAAgZEIsRQhCOAAgwoKFAigCoFCBoNSLyg0YqADQAAD VlqlYiDBZgIToX7xWVEgwABCss7gEoHEwLA+oOh8yDFgQA8sWoJ0ImLrxCJafr4A aVFngoADKXhI4FDsVoNTwZZI4xApyMYBOEQIQ+HqQokNFQQCUrLtQSJdFQZBi5FA QZgdggQ0aAGsiwJi0RoQ6EgJwh0hueIUuJDBSQK8u5JpEzJC1YwDHA9sWmChBDUL RmrpcUAAzZCNBdJ4WFPjBysSHAMUOMBsmgKOBpxdYzHgyAIYZSwl4HXDAEckjzaM /9hTpQknEysCELCzYXOAJGxoPGiTYkByo9lm2Q8g4JOhJ9V9gEEDAiQwxAyQxJbJ AocckwcQHiRgEwEnwLERfzvQUFwGRdx3wAKFwHZTNcoAMIAnTChQlAGYyEGCAw4U oUQPD4SwigWwvHJAAT5EwIN3/G3RywUTBKLJAAUgIAACamSRBAIAPNCBLxUMsAQ3 YCQHQQ5TjEFGB6IIMIAZiLCAwBxXQGAANpdwIFAAf0gipjdQ3NANA88QYcAkzUgQ gxQZuAEACBEgw0hyBRAghg02uLAZAJXAoAEBbziiAQBUGFMTABrIgIFNAuAxigov RAEqF6RMYIoPg1Lk6quwxgcq66y0MhQQADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=COUNTER.gif Content-Type: image/gif; name=COUNTER.gif Content-Location: http://pubs.acs.org/sda/4205/COUNTER.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAP///5OTk3h4eGxsbHl5eXV1dW9vb5KSknZ2dnFxcWhoaG5u bpGRkYmJiXd3d3BwcGtra21tbXNzc4yMjGVlZXR0dGpqaouLi39/f19fX4CAgGNj Y4aGhuzs7IODg5aWlnJycvX19WdnZ52dnTQ0NJeXl35+fmlpabS0tIKCgmJiYu3t 7X19fVlZWVdXV9TU1EhISIqKirm5uZqamu7u7k1NTefn5/Hx8ZmZmURERJSUlHt7 e9zc3Hx8fJubm4SEhKGhoYGBgcvLy1hYWL+/v1ZWVqSkpFpaWlxcXJiYmE5OTqmp qTg4OHp6elRUVNHR0fT09I2NjTc3N8fHx0ZGRjAwMKamptra2tvb26+vrykpKays rMzMzI+Pj15eXvr6+pWVlU9PT+Li4s7OzsnJybOzs729vfb29oWFhUFBQcXFxTU1 NVtbWy4uLi8vL56enisrK+rq6vn5+fj4+GBgYK2trUlJScLCwmZmZsbGxvDw8JCQ kKKiot3d3T09PUJCQpycnFJSUktLS83NzfPz8/Ly8lFRUScnJ2RkZCUlJenp6Y6O jujo6Dw8PCYmJuTk5NDQ0D8/P6Ojozo6OigoKKioqC0tLe/v76CgoFNTU6qqqrGx sd7e3ry8vDAwLzk5OT4+PuPj42FhYfv7+4eHh5iYlzExMbCwsP39/bKysl9fYMjI yKenp5SUlba2ttHR0CAgIFRUU/z8/pubmtfX1/f399/f30NDQ8/Pz+bm5oiIiEBA QMrKyr6+vt7e32lpaH5+f/7+/qWlpeDg4Ds7O29vcCoqKp+fn+Xl5YCAgfz8/HFx cLu7u9bW1iMjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAyABEAAAj/ACd8CMCA4BtABQ8EIDji TcGFBIGUULjwAA4gDxdK0gGRAZAkFAN8aJCCQIIHBgwA0pFAgoEEMD/4iBChAAID ESpxGGAAQQULDawoGEA0Qh0BEIgqMNIgKU8BElhQ8EBmSYYuDVQMkDHGhJcLF0xs gSDi2I4kBICAUSFBUwMfVlCUQWFkhAe5KITNwFBJ7gcFCwoYiAMAABgNQYrcKYwM EQYWYORscEGrS5QIWOKwKfDlQokQhQF0OKAjNJQSAvSEPpBBQZZgMfo80pCgGAAZ HgCMWOBgAo0hNSD9QKOCCwAQFG5wiMFiyZwZGi4w4NRgUYoLCTqkarBCSIsTWDp5 /7rgK8WGVmdiMRnE5cQCDjSU3BrUA0MLMgB8tNATRMOaBSEUEQkHXajBRCTEpADB JRhYsskVQxhAQxRrCAJDAl5k8cIkUswQygAUaLACFZMIgQABhkwBABcu0NAEASQA WIQfGuhCxh8w7LLDBisQkIgMLygBwg0IuCFFFRC0YEYvbrSBgSIDIEFAB6BUscoD INihxhUrQKCIBBIYI0IINZBAAAFzPGKDJgYcwQgRRozCRw7L3BDBIVVoQUEgZrji iCMIxKGAExV0QAIleVhgQRq8SGLDCGIMAAEsokBBBRwFgBAaMxZkIkZhfcBARQKF OKAFCYdQ4IQMRGhBSRCMiP8wBAIdSAFHHgMskMMYE8gwTC4PRODMBlDY0QYCJjxx hAqCPOCCDafwgEMiYQywwh5wZLBEBUNsgYUUbmBiiwgbTPnHGkI8gEANT+wBDABQ VCBBGxaEEAgTLHBwhyUkmEIAHR0oUAohMBiCxwtTkFDCHBrQcYEsqnxyhRoUQCCB HC40wkMEOzjxhA+ZfCEHAU0wkUAIR6ThwQVTNJKDHybgQUMPvwCQTA0nMADAK7UQ kSkbZ9ig4g8PEODFF83cccMRDdDxghVpjAFACh7k0MQZFNQwwQSEPPGCGRMYcEkM VIiBSxEVZMADAMoggAEGSrBSGCROmIBGGEQUJoQSB1jNwEMWMGACQAwNhPEDKgu4 oFBohXzgQAgB2FEHAAUIsAEIdUzQQhRoZKDCLJssgAQpEyBxwhIoCMAGDgXEYEIG D3yQwgFIJJCEBRuM0MQMOMywSAk7BFBABgmMUAAGFSygQFJJMDDAAycANsABH/Ck AGAQGOGBCBGAYAAFHLxhgQEnPPDAFhKIcD0ifHCARwQPLACBAQSw4AACPkXRQOUC 9F9AAxMoAAH654AC6CAIDiCgA35wgAIksH8l6EH/BFCBA3gAAQ4ggAN6IIGAAAA7 ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=crossref.gif Content-Type: image/gif; name=crossref.gif Content-Location: http://pubs.acs.org/sda/4205/crossref.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAAZopbnU5qqqqg4ODrXS5FGVvxQUFBlyqzyJuIeHhwBhoDY2 Nm6mymOhx2KfxQprqFaYwk+Vv5a/2QprpoS10gBioQBkolKXwE2TvgBZm0qSvQxt pw1rpgBbnBp1rBoaGiIiIv///wAAAAUFBfT09Pf39/Pz89ra2sTExNTU1Pv7++jo 6Ly8vPDw8Orq6vr8/cnJydHR0bm5ucHBwdLS0isrK/Hx8evr68vLy8zMzPz8/Pb2 9uXl5eTk5Pj4+L6+vpaWlvL3+u71+fr6+r+/v5iYmOPj48bGxjIyMsDAwObm5q7O 4tzc3KSkpPn7/ZzD2xBlo/7+/gBjosXFxc7Ozs/Pz+7u7u/v71iZwuHh4fb5/Pf6 /MfHx9Hj7nqtzs3NzdbW1sLCwqDF3L29vZubmwBengBfn8rKyunp6QNmo/n5+QBc nQBmo9DQ0ABdnuDg4P3+/t/f37u7u9vp8gBen63N4ezz+Orr6+vx9v///rGxsRFt qI6OjrfU5c/OzkePvFRUVCZ7sPX19cfd65uYl6WlpQ9tp+bl5dXPzLW1tZKSkhhz qx51rHKqzOry99rp8oy31MTDw7m6utTb4Lu8vHquzprC2p7E23+y0Z/E3ABeoAZn pOjx99nY1+jy9/P3+6rL4PT4+62trY251cPDw7W5uxJrp9DR0vD2+svg7Mvf7IKy 0X5+fludxECKuUSOu5+fn3h4eIa20xByruTv9cHa6AZiobe3t2ejyNnZ2XNwbZK9 2CgoKPLy8m1tbUZmetXl8GSewcrLy6TI3qfJ36fK3wJkoid7r9rZ2eHt9EiAoxRx quzs7JycnApoo8jd66Ojo8Tb6lmbw1qbw/L3+wRmo/39/TOEtfr9/sjIyKnK309P T9LOyyF5r3mszf7+/7q6ui0tLdzq8t7r84WFhYi31N7e3sXc6tfX13V1dYu31ZCQ kPHw8BRyqhpyqnCpzKHG3QdqpRx2rR53rZqamufn53SqzXaqzPj7/e30+VaYwevy 9il7sPv7+rS0tLKysiH5BAAAAAAALAAAAAAyABEAAAj/AEMIHEgwhIp6OcgAKQTG RZSCECNKnFiwxxdJNG6QcJGCSJUTQyiKHDmQBIocaga6UELlh5wmRWCxOMGjBEmI TN7YjLgiCQmBLdDJqGLDB8EeRMytoETjzs0QVhaIGPAvYpwwAk3AGHNlojUUYEL4 4AJjxw1/Z3pBSxKihQB6cQQKmAokC0QeU0LoSDHDBMksRGzayMFHBC+pIHAYGGFA hL8v4aamO1FwB4sQV8CteBrChIwWAsmIEMEYyDYRMlQMANFkAGkkRwqy2JEChQ7O AoeM2Sxq9I8SzBrXQPLhA5oiImpAPHHIDzLcBSOx0zOVhYoQUhOUIBFbUfKC/biV /5ok8MUWgUIGBrFTMB+qgdjwnCI0lQeKEqRcD2BsYp0IEATl0YkyzjwwjycOQFHO BbZUIoQ+HGzCTx8hOPIHAApoEAIxBxgzyy+6kKPCECxsxAogCYCGQiy+7BTCPsFo woY8G4wDgQKLuGHGEgi4sYEHUiigyhMZtENBBNR0Q8cFDOyCyEA6TGFERM1MKRAm D1QgARyfvFCAAhNYIksAUqQRzQsIdPDOIApIwQAnIWCQwTHFhKCGHH4JFAMOBWUD Qy4DNQKAFPDAEYQTBXSAhUDnVJDGMy+80kED38xRQBnLJONEJgdkYI9BM7wxEBoy bBZCDD2koMRAtEyzBhsexI7TBRYZtCJQKIGYscEiFpRRiwQOPBEPHXVoIEYEa1wz UAxh5BkCXz+0QYIwD6mHxR4TLCJOA1DgMtAcrhgyASNihLCEKWxwIA0+GFQDgDsE EGQDDLcwcQMNibTBBRWCQPSIOt4MowUBkFA4UCoUeKHNeUKA4sUqwITQxSj3XKJF QSScgMMZMVgRAglGDRQQADs= ------------9rqzPOlJj9JcTJZT4nfBp3 Content-Disposition: inline; filename=scriptaculous.htm Content-Type: text/html; charset=UTF-8; name=scriptaculous.htm Content-Location: http://pubs.acs.org/templates/jsp/js/scriptaculous.js?load=effects,dragdrop Content-Transfer-Encoding: 8bit // script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008 // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // For details, see the script.aculo.us web site: http://script.aculo.us/ var Scriptaculous = { Version: '1.8.1', require: function(libraryName) { // inserting via DOM fails in Safari 2.0, so brute force approach document.write('